Redis應用場景
很多大型電商網站、視頻直播和游戲應用等,存在 大規模數據訪問 ,對 數據查詢效率要求高 ,且 數據結構簡單 , 不涉及太多關聯查詢 。這種場景使用Redis,在速度上(shang)對(dui)傳統磁盤數(shu)據(ju)庫(ku)有(you)很(hen)大優勢,能夠有(you)效(xiao)減少(shao)數(shu)據(ju)庫(ku)磁盤IO,提高數(shu)據(ju)查詢效(xiao)率,減輕(qing)管理(li)維護工作量,降低數(shu)據(ju)庫(ku)存儲(chu)成(cheng)本。Redis對(dui)傳統磁盤數(shu)據(ju)庫(ku)是一個重要的補充,成(cheng)為了互聯網(wang)應用,尤其是支持高并發訪問的互聯網(wang)應用必不可少(shao)的基礎服務之(zhi)一。
以(yi)下舉幾個典型樣例:
- (電商網站)秒殺搶購
電商網站的商品類目、推(tui)薦系統以及秒殺(sha)搶購活動,適宜使用Redis緩存數(shu)據庫。
例如秒殺搶購活動,并發高(gao),對于傳(chuan)統關系型(xing)數據庫來說訪(fang)問壓力大,需要(yao)較(jiao)高(gao)的硬件(jian)配置(如磁盤IO)支撐。Redis數據庫,單節(jie)點QPS支撐能達(da)到10萬,輕松應對秒殺并發。實現秒殺和數據加鎖的命令簡單,使(shi)用SET、GET、DEL、RPUSH等命令即可。
- (視頻直播)消息彈幕
直播間的(de)在線用戶列表,禮物(wu)排行榜,彈(dan)幕(mu)消息(xi)等信息(xi),都適(shi)合使用Redis中的(de)SortedSet結構進行存儲(chu)。
例如彈幕消息(xi)(xi),可使用ZREVRANGEBYSCORE排(pai)序返(fan)回,在(zai)Redis5.0中,新增了(le)zpopmax,zpopmin命(ming)令,更加方便消息(xi)(xi)處理(li)。
- (游戲應用)游戲排行榜
在線游戲一(yi)般涉及排(pai)行(xing)榜實時(shi)展現,比(bi)如列(lie)出當前得(de)分最高的10個用(yong)戶。使用(yong)Redis的有序(xu)集合存(cun)儲用(yong)戶排(pai)行(xing)榜非(fei)常(chang)合適,有序(xu)集合使用(yong)非(fei)常(chang)簡單(dan),提供多達20個操(cao)作集合的命令。
- (社交APP)返回最新評論/回復
在(zai)web類應用中,常有“最新評(ping)(ping)論”之類的(de)查(cha)詢,如果(guo)使(shi)用關系型(xing)數(shu)據庫,往往涉及到(dao)按評(ping)(ping)論時間(jian)逆排序,隨(sui)著評(ping)(ping)論越(yue)來越(yue)多,排序效率(lv)越(yue)來越(yue)低,且并發頻繁。
使用(yong)Redis的List(鏈表),例如(ru)存儲最新1000條(tiao)評論,當(dang)請求的評論數在(zai)這個范圍,就不(bu)需要(yao)訪問磁盤數據庫(ku),直接從緩存中(zhong)返回,減少數據庫(ku)壓力的同時,提升APP的響應速度。