Redis全稱(chēng)是Remote Dictionary Server
速度快
- 官方給出的數(shù)字是讀寫(xiě)性能可以達(dá)到10萬(wàn)/秒
- Redis的所有數(shù)據(jù)都是存放在內(nèi)存中的
- Redis是用C語(yǔ)言實(shí)現(xiàn)的
- Redis使用了單線(xiàn)程架構(gòu),預(yù)防了多線(xiàn)程可能產(chǎn)生的競(jìng)爭(zhēng)問(wèn)題
基于鍵值對(duì)的數(shù)據(jù)結(jié)構(gòu)服務(wù)器
- Redis主要提供了5種數(shù)據(jù)結(jié)構(gòu):字符串、哈希、列表、集合、有序集合,同時(shí)在字符串的基礎(chǔ)之上演變出了位圖(Bitmaps)和Hyper-LogLog兩種數(shù)據(jù)結(jié)構(gòu)。
豐富的功能
除了5中數(shù)據(jù)結(jié)構(gòu),Redis還提供了許多額外的功能:
- 提供了鍵過(guò)期功能,可以用來(lái)實(shí)現(xiàn)緩存
- 提供了發(fā)布訂閱功能,可以用來(lái)實(shí)現(xiàn)消息系統(tǒng)
- 支持Lua腳本功能,可以利用Lua創(chuàng)造出新的Redis命令
- 提供了簡(jiǎn)單的事務(wù)功能,可以利用Lua創(chuàng)造出新的Redis命令
- 提供了流水線(xiàn)(Pipeline)功能,這樣客戶(hù)端能將一批命令一次性傳到Redis,減少了網(wǎng)絡(luò)的開(kāi)銷(xiāo)。
簡(jiǎn)單穩(wěn)定
- 代碼量相對(duì)少
- 不需要依賴(lài)操作系統(tǒng)中的類(lèi)庫(kù)
- Redis自己實(shí)現(xiàn)了事件處理的相關(guān)功能
- 作者維護(hù)的上千個(gè)Redis為例,沒(méi)有出現(xiàn)過(guò)因?yàn)镽edis自身bug而宕機(jī)的情況
客戶(hù)端語(yǔ)言多
- Java、PHP、Python、C、C++、Nodejs
持久化
- RDB、AOF
主從復(fù)制
高可用和分布式
- Redis從2.8開(kāi)始正式提供了Redis Sentinel
- Redis從3.0開(kāi)始正式提供了Redis Cluster,它是Redis真正的分布式實(shí)現(xiàn),提供了高可用、讀寫(xiě)和容量的擴(kuò)展性。
Redis可以做什么
- 緩存
- 排行榜系統(tǒng)
- 計(jì)數(shù)器
- 社交網(wǎng)絡(luò)
-- 贊/踩、粉絲、共同好友/喜好、推送、下拉刷新等是社交網(wǎng)站的必備功能,由于社交網(wǎng)站訪(fǎng)問(wèn)量通常比較大,而且傳統(tǒng)的關(guān)系型數(shù)據(jù)不太適合保存這種類(lèi)型的數(shù)據(jù),Redis提供的數(shù)據(jù)結(jié)構(gòu)可以相對(duì)比較容易地實(shí)現(xiàn)這些功能。 - 消息隊(duì)列系統(tǒng)
-- 訂閱功能和阻塞隊(duì)列
Redis不可以做什么
站在數(shù)據(jù)規(guī)模和數(shù)據(jù)冷熱的角度來(lái)進(jìn)行分析
- 數(shù)據(jù)量太大,則不適合用Redis存儲(chǔ)
- 冷數(shù)據(jù)需要存儲(chǔ)在Redis,熱數(shù)據(jù)存儲(chǔ)在Redis可以加速讀寫(xiě),也可以減輕后端存儲(chǔ)的負(fù)載