隨著數(shù)據(jù)量的增長(zhǎng),MySQL 已經(jīng)滿足不了大型互聯(lián)網(wǎng)類應(yīng)用的需求冠跷。因此,Redis 基于內(nèi)存存儲(chǔ)數(shù)據(jù)甚垦,可以極大的提高查詢性能届垫,對(duì)產(chǎn)品在架構(gòu)上很好的補(bǔ)充释液。在某些場(chǎng)景下,可以充分的利用 Redis 的特性敦腔,大大提高效率均澳。
緩存
對(duì)于熱點(diǎn)數(shù)據(jù),緩存以后可能讀取數(shù)十萬(wàn)次符衔,因此找前,對(duì)于熱點(diǎn)數(shù)據(jù),緩存的價(jià)值非常大判族。例如躺盛,分類欄目更新頻率不高,但是絕大多數(shù)的頁(yè)面都需要訪問這個(gè)數(shù)據(jù)形帮,因此讀取頻率相當(dāng)高槽惫,可以考慮基于 Redis 實(shí)現(xiàn)緩存周叮。
會(huì)話緩存
此外,還可以考慮使用 Redis 進(jìn)行會(huì)話緩存界斜。例如仿耽,將 web session 存放在 Redis 中。
時(shí)效性
例如驗(yàn)證碼只有60秒有效期各薇,超過時(shí)間無(wú)法使用项贺,或者基于 Oauth2 的 Token 只能在 5 分鐘內(nèi)使用一次,超過時(shí)間也無(wú)法使用峭判。
訪問頻率
出于減輕服務(wù)器的壓力或防止惡意的洪水攻擊的考慮开缎,需要控制訪問頻率,例如限制 IP 在一段時(shí)間的最大訪問量林螃。
計(jì)數(shù)器
數(shù)據(jù)統(tǒng)計(jì)的需求非常普遍奕删,通過原子遞增保持計(jì)數(shù)。例如疗认,應(yīng)用數(shù)完残、資源數(shù)、點(diǎn)贊數(shù)侮邀、收藏?cái)?shù)坏怪、分享數(shù)等。
社交列表
社交屬性相關(guān)的列表信息绊茧,例如铝宵,用戶點(diǎn)贊列表、用戶分享列表华畏、用戶收藏列表鹏秋、用戶關(guān)注列表、用戶粉絲列表等亡笑,使用 Hash 類型數(shù)據(jù)結(jié)構(gòu)是個(gè)不錯(cuò)的選擇侣夷。
記錄用戶判定信息
記錄用戶判定信息的需求也非常普遍,可以知道一個(gè)用戶是否進(jìn)行了某個(gè)操作仑乌。例如百拓,用戶是否點(diǎn)贊、用戶是否收藏晰甚、用戶是否分享等衙传。
交集、并集和差集
在某些場(chǎng)景中厕九,例如社交場(chǎng)景蓖捶,通過交集、并集和差集運(yùn)算扁远,可以非常方便地實(shí)現(xiàn)共同好友俊鱼,共同關(guān)注刻像,共同偏好等社交關(guān)系。
熱門列表與排行榜
按照得分進(jìn)行排序并闲,例如细睡,展示最熱、點(diǎn)擊率最高帝火、活躍度最高等條件的排名列表纹冤。
最新動(dòng)態(tài)
按照時(shí)間順序排列的最新動(dòng)態(tài),也是一個(gè)很好的應(yīng)用购公,可以使用 Sorted Set 類型的分?jǐn)?shù)權(quán)重存儲(chǔ) Unix 時(shí)間戳進(jìn)行排序。
消息隊(duì)列
Redis 能作為一個(gè)很好的消息隊(duì)列來(lái)使用雁歌,依賴 List 類型利用 LPUSH 命令將數(shù)據(jù)添加到鏈表頭部宏浩,通過 BRPOP 命令將元素從鏈表尾部取出。同時(shí)靠瞎,市面上成熟的消息隊(duì)列產(chǎn)品有很多比庄,例如 RabbitMQ。因此乏盐,更加建議使用 RabbitMQ 作為消息中間件佳窑。
Redis還有什么其它的使用場(chǎng)景么?歡迎下方留言探討父能。