Redis

Redis是一種支持Key-Value等多種數(shù)據(jù)結(jié)構(gòu)的內(nèi)存 數(shù)據(jù)庫 ??捎糜诰彺?、事件發(fā)布或訂閱、高速隊(duì)列等場景。該數(shù)據(jù)庫使用ANSI C語言編寫,支持網(wǎng)絡(luò),提供字符串、哈希、列表、隊(duì)列、集合結(jié)構(gòu)直接存取,基于內(nèi)存,可持久化。有關(guān)Redis的詳細(xì)信息,請?jiān)L問Redis官方網(wǎng)站https:// redis .io/。

Redis應(yīng)用場景

很多大型電商網(wǎng)站、 視頻直播 和游戲應(yīng)用等,存在大規(guī)模數(shù)據(jù)訪問,對數(shù)據(jù)查詢效率要求高,且數(shù)據(jù)結(jié)構(gòu)簡單,不涉及太多關(guān)聯(lián)查詢。這種場景使用Redis,在速度上對傳統(tǒng)磁盤數(shù)據(jù)庫有很大優(yōu)勢,能夠有效減少數(shù)據(jù)庫磁盤IO,提高數(shù)據(jù)查詢效率,減輕管理維護(hù)工作量,降低數(shù)據(jù)庫存儲成本。Redis對傳統(tǒng)磁盤數(shù)據(jù)庫是一個重要的補(bǔ)充,成為了互聯(lián)網(wǎng)應(yīng)用,尤其是支持高并發(fā)訪問的互聯(lián)網(wǎng)應(yīng)用必不可少的基礎(chǔ)服務(wù)之一。

以下舉幾個典型樣例:

(電商網(wǎng)站)秒殺搶購

電商網(wǎng)站的商品類目、推薦系統(tǒng)以及秒殺搶購活動,適宜使用Redis緩存數(shù)據(jù)庫。

例如秒殺搶購活動,并發(fā)高,對于傳統(tǒng)關(guān)系型數(shù)據(jù)庫來說訪問壓力大,需要較高的硬件配置(如磁盤IO)支撐。Redis數(shù)據(jù)庫,單節(jié)點(diǎn)QPS支撐能達(dá)到10萬,輕松應(yīng)對秒殺并發(fā)。實(shí)現(xiàn)秒殺和數(shù)據(jù)加鎖的命令簡單,使用SET、GET、DEL、RPUSH等命令即可。

加鎖部分,可參考最佳實(shí)踐:使用DCS實(shí)現(xiàn)分布式鎖

(視頻直播)消息彈幕

直播間的在線用戶列表,禮物排行榜,彈幕消息等信息,都適合使用Redis中的SortedSet結(jié)構(gòu)進(jìn)行存儲。

例如彈幕消息,可使用ZREVRANGEBYSCORE排序返回,在Redis5.0中,新增了zpopmax,zpopmin命令,更加方便消息處理。

(游戲應(yīng)用)游戲排行榜

在線游戲一般涉及排行榜實(shí)時展現(xiàn),比如列出當(dāng)前得分最高的10個用戶。使用Redis的有序集合存儲用戶排行榜非常合適,有序集合使用非常簡單,提供多達(dá)20個操作集合的命令。

可參考最佳實(shí)踐:使用DCS實(shí)現(xiàn)排行榜功能

(社交APP)返回最新評論/回復(fù)

在web類應(yīng)用中,常有“最新評論”之類的查詢,如果使用關(guān)系型數(shù)據(jù)庫,往往涉及到按評論時間逆排序,隨著評論越來越多,排序效率越來越低,且并發(fā)頻繁。

使用Redis的List(鏈表),例如存儲最新1000條評論,當(dāng)請求的評論數(shù)在這個范圍,就不需要訪問磁盤數(shù)據(jù)庫,直接從緩存中返回,減少數(shù)據(jù)庫壓力的同時,提升APP的響應(yīng)速度。