Redis 在實(shí)際開發(fā)中起到的作用詳解
redis是什么
redis是一種支持Key-Value等多種數(shù)據(jù)結(jié)構(gòu)的存儲系統(tǒng)。可用于緩存、事件發(fā)布或訂閱、高速隊(duì)列等場景。該數(shù)據(jù)庫使用ANSI C語言編寫,支持網(wǎng)絡(luò),提供字符串、哈希、列表、隊(duì)列、集合結(jié)構(gòu)直接存取,基于內(nèi)存,可持久化。
支持的語言
redis的應(yīng)用場景有哪些
1、會話緩存(最常用)
2、消息隊(duì)列,比如支付
3、活動排行榜或計(jì)數(shù)
4、發(fā)布、訂閱消息(消息通知)
5、商品列表、評論列表等
redis數(shù)據(jù)類型
Redis一共支持五種數(shù)據(jù)類:string(字符串)、hash(哈希)、list(列表)、set(集合)和zset(sorted set 有序集合)。
(1)string(字符串)
它是redis最基本的數(shù)據(jù)類型,一個key對應(yīng)一個value,需要注意是一個鍵值***存儲512MB。
(2)hash(哈希)
redis hash是一個鍵值對的集合, 是一個string類型的field和value的映射表,適合用于存儲對象
(3)list(列表)
是redis簡單的字符串列表,它按插入順序排序
(4)set(集合)
是string類型的無序集合,也不可重復(fù)
(5)zset(sorted set 有序集合)
是string類型的有序集合,也不可重復(fù)
sorted set中的每個元素都需要指定一個分?jǐn)?shù),根據(jù)分?jǐn)?shù)對元素進(jìn)行升序排序,如果多個元素有相同的分?jǐn)?shù),則以字典序進(jìn)行升序排序,sorted set 因此非常適合實(shí)現(xiàn)排名
redis服務(wù)相關(guān)的命令
slect #選擇數(shù)據(jù)庫(數(shù)據(jù)庫編號0-15)
quit #退出連接
info #獲得服務(wù)的信息與統(tǒng)計(jì)
monitor #實(shí)時監(jiān)控
config get #獲得服務(wù)配置
flushdb #刪除當(dāng)前選擇的數(shù)據(jù)庫中的key
flushall #刪除所有數(shù)據(jù)庫中的key
redis的發(fā)布與訂閱
redis發(fā)布與訂閱(pub/sub)是它的一種消息通信模式,一方發(fā)送信息,一方接收信息。
下圖是三個客戶端同時訂閱同一個頻道
下圖是有新信息發(fā)送給頻道1時,就會將消息發(fā)送給訂閱它的三個客戶端
redis持久化
redis持久有兩種方式:Snapshotting(快照),Append-only file(AOF)
Snapshotting(快照)
1、將存儲在內(nèi)存的數(shù)據(jù)以快照的方式寫入二進(jìn)制文件中,如默認(rèn)dump.rdb中
2、save 900 1
#900秒內(nèi)如果超過1個Key被修改,則啟動快照保存
3、save 300 10
#300秒內(nèi)如果超過10個Key被修改,則啟動快照保存
4、save 60 10000
#60秒內(nèi)如果超過10000個Key被修改,則啟動快照保存
Append-only file(AOF)
1、使用AOF持久時,服務(wù)會將每個收到的寫命令通過write函數(shù)追加到文件中(appendonly.aof)
2、AOF持久化存儲方式參數(shù)說明
- appendonly yes
#開啟AOF持久化存儲方式
- appendfsync always
#收到寫命令后就立即寫入磁盤,效率最差,效果***
- appendfsync everysec
#每秒寫入磁盤一次,效率與效果居中
- appendfsync no
#完全依賴OS,效率***,效果沒法保證。