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