您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Redis緩存原理是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
1. Redis是什么
Redis 是一個高性能的開源的、C語言寫的Nosql(非關系型數(shù)據(jù)庫),數(shù)據(jù)保存在內(nèi)存中。 Redis 是以key-value形式存儲,和傳統(tǒng)的關系型數(shù)據(jù)庫不一樣。不一定遵循傳統(tǒng)數(shù)據(jù)庫的些基本要求,比如說,不遵循sql標準,事務,表結構等等,非關系型數(shù)據(jù)庫嚴格上不是一種數(shù)據(jù)庫,應該是一種數(shù)據(jù)結構化存儲方法的集合。 Java中數(shù)據(jù)結構:String,數(shù)組,list,set map… Redis提供了很多的方法,可以用來存取各種數(shù)據(jù)結構的數(shù)據(jù)。
2.特點(優(yōu)勢)
1.數(shù)據(jù)保存在內(nèi)存,存取速度快,并發(fā)能力強
2.它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、 zset(sorted set --有序集合)和hash(哈希類型)。
3.redis的出現(xiàn),很大程度補償了memcached這類key/value存儲的不足,在部分場合可以對關系數(shù)據(jù)庫(如MySQL)起到很好的補充作用。
4.它提供了Java,C/C++,C#,PHP,JavaScript等客戶端,使用很方便。
5.Redis支持集群(主從同步、負載均衡)。數(shù)據(jù)可以主服務器向任意數(shù)量從的從服務器上同步,從服務器可以是關聯(lián)其他從服務器的主服務器。
6.支持持久化,可以將數(shù)據(jù)保存在硬盤的文件中
7.支持訂閱/發(fā)布(subscribe/publish)功能 QQ群
1、數(shù)據(jù)存放:存放到內(nèi)存中,還能不定期持久化到磁盤。存取速度快,并發(fā)能力強,斷電后數(shù)據(jù)不丟失。
2、支持Value類型更多。
3、多種客戶端(語言 java php c# js)
4、支持集群來擴展空間 8G+8G+16G
5、開源(免費還有很多人維護)
3. 安裝Redis服務端
Redis 的官方下載站是 http://redis.io/download,可以去上面下載最新的安裝程序下來
3.1. windows下的安裝和使用
1.下載redis程序軟件
使用redisbin32 或redisbin64
2.綠色軟件,不需要安裝,直接使用
3.啟動redis服務(帶配置文件啟動,和不帶配置文件啟動)
4.連接到redis進行操作
cmd>{%redis%}/redis-cli -h ip地址 -p 端口號
ip 默認為本地 -p 默認6379
redis-cli -h 172.16.6.248 -p 6379
cmd>{%redis%}/redis-cli
2. Redis持久化配置
Redis 提供了兩種不同級別的持久化方式:RDB和AOF,可以通過修改redis.conf來進行配置.
當滿足持久化條件時,會進行持久化保存,還來不及保存的數(shù)據(jù),會以aof日志的方式保存下來。
Redis啟動時,先解析日志文件(一堆命令),恢復數(shù)據(jù)。然后還要加載rdb文件(取并集)。
4.RDB模式
RDB 持久化可以在指定的時間間隔內(nèi)生成數(shù)據(jù)集的時間點快照,默認開啟該模式.
如何關閉 rdb 模式:
save “”
save 900 1 //至少在900秒的時間段內(nèi)至少有一次改變存儲同步一次
save xxx save 60 10000
5.AOF日志追加模式
AOF 持久化記錄服務器執(zhí)行的所有寫操作命令,并在服務器啟動時,通過重新執(zhí)行這些命令來還原數(shù)據(jù)集,默認關閉該模式。
如何開啟aof模式:
appendonly yes //yes 開啟,no 關閉
#appendfsync always //每次有新命令時執(zhí)行一次fsync,就將緩沖區(qū)的數(shù)據(jù)放入aof文件
#這里我們啟用 everysec
appendfsync everysec //每秒 fsync 一次
#appendfsync no //從不fsync(交給操作系統(tǒng)來處理,可能很久才執(zhí)行一次fsync)
其它的參數(shù)請大家看redis.conf配置文件詳解
6.Redis經(jīng)典實用場景-緩存
6.1為什么要使用緩存
把經(jīng)常查詢的數(shù)據(jù),很少修改的數(shù)據(jù)存放到緩存中,減少訪問數(shù)據(jù)庫,降低數(shù)據(jù)庫壓力并且緩存一般都是內(nèi)存,訪問速度比較快。
6.2哪些數(shù)據(jù)適合放到緩存中
經(jīng)常查詢:緩存就是提供數(shù)據(jù)查詢高效訪問。
很少修改:修改時要同步修改緩存和數(shù)據(jù)庫
例如:地區(qū)數(shù)據(jù)、商品分類、數(shù)據(jù)字典 菜單(不考慮權限)
6.3選擇合適的緩存
Hibernate二級緩存,mybatis二級緩存,redis中央緩存
Hibernate二級緩存,mybatis二級緩存默認不支持集群緩存,要使用redis
6.4怎么存儲數(shù)據(jù)
1) json:把要存放的數(shù)據(jù)轉換為json類型的字符串
保存緩存時:
Java Object----------->json字符串
獲取緩存:
json字符串-------->Java Object-
Json框架:jdk-json-lib jackson gson fastjson
2)二進制存放:把要存放的數(shù)據(jù)序列化為二進制序列化框架實現(xiàn)
7. 實現(xiàn)菜單緩存
關于Redis緩存原理是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。