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