redis常見應用場景

2021-09-22 17:49:13 字數 2018 閱讀 6367

redis應用場景總結redis平時我們用到的地方蠻多的,下面就了解的應用場景做個總結:

1、熱點資料的快取由於redis訪問速度塊、支援的資料型別比較豐富,所以redis很適合用來儲存熱點資料,另外結合expire,我們可以設定過期時間然後再進行快取更新操作,這個功能最為常見,我們幾乎所有的專案都有所運用。

2、限時業務的運用redis中可以使用expire命令設定乙個鍵的生存時間,到時間後redis會刪除它。利用這一特性可以運用在限時的優惠活動資訊、手機驗證碼等業務場景。

3、計數器相關問題redis由於incrby命令可以實現原子性的遞增,所以可以運用於高併發的秒殺活動、分布式序列號的生成、具體業務還體現在比如限制乙個手機號發多少條簡訊、乙個介面一分鐘限制多少請求、乙個介面一天限制呼叫多少次等等。

4、排行榜相關問題關係型資料庫在排行榜方面查詢速度普遍偏慢,所以可以借助redis的sortedset進行熱點資料的排序。在奶茶活動中,我們需要展示各個部門的點讚排行榜, 所以我針對每個部門做了乙個sortedset,然後以使用者的openid作為上面的username,以使用者的點讚數作為上面的score, 然後針對每個使用者做乙個hash,通過zrangebyscore就可以按照點讚數獲取排行榜,然後再根據username獲取使用者的hash資訊,這個當時在實際運用中效能體驗也蠻不錯的。

5、分布式鎖 這個主要利用redis的setnx命令進行,setnx:"set if not exists"就是如果不存在則成功設定快取同時返回1,否則返回0 ,這個特性在俞你奔遠方的後台中有所運用,因為我們伺服器是集群的,定時任務可能在兩台機器上都會執行,所以在定時任務中首先 通過setnx設定乙個lock,如果成功設定則執行,如果沒有成功設定,則表明該定時任務已執行。 當然結合具體業務,我們可以給這個lock加乙個過期時間,比如說30分鐘執行一次的定時任務,那麼這個過期時間設定為小於30分鐘的乙個時間 就可以,這個與定時任務的週期以及定時任務執行消耗時間相關。當然我們可以將這個特性運用於其他需要分布式鎖的場景中,結合過期時間主要是防止死鎖的出現。

6、延時操作 這個目前我做過相關測試,但是還沒有運用到我們的實際專案中,下面我舉個該特性的應用場景。 比如在訂單生產後我們占用了庫存,10分鐘後去檢驗使用者是夠真正購買,如果沒有購買將該單據設定無效,同時還原庫存。 由於redis自2.8.0之後版本提供keyspace notifications功能,允許客戶訂閱pub/sub頻道,以便以某種方式接收影響redis資料集的事件。 所以我們對於上面的需求就可以用以下解決方案,我們在訂單生產時,設定乙個key,同時設定10分鐘後過期, 我們在後台實現乙個***,監聽key的實效,監聽到key失效時將後續邏輯加上。 當然我們也可以利用rabbitmq、activemq等訊息中介軟體的延遲佇列服務實現該需求。

7、分頁、模糊搜尋redis的set集合中提供了乙個zrangebylex方法,語法如下:zrangebylex key min max [limit offset count]通過zrangebylex zset - + limit 0 10 可以進行分頁資料查詢,其中- +表示獲取全部資料zrangebylex key min max 這個就可以返回字典區間的資料,利用這個特性可以進行模糊查詢功能,這個也是目前我在redis中發現的唯一乙個支援對儲存內容進行模糊查詢的特性。前幾天我通過這個特性,對學校資料進行了模擬測試,學校資料60萬左右,響應時間在700ms左右,比mysql的like查詢稍微快一點,但是由於它可以避免大量的資料庫io操作,所以總體還是比直接mysql查詢更利於系統的效能保障。

8、點讚、好友等相互關係的儲存redis set對外提供的功能與list類似是乙個列表的功能,特殊之處在於set是可以自動排重的,當你需要儲存乙個列表資料,又不希望出現重複資料時,set是乙個很好的選擇,並且set提供了判斷某個成員是否在乙個set集合內的重要介面,這個也是list所不能提供的。 又或者在微博應用中,每個使用者關注的人存在乙個集合中,就很容易實現求兩個人的共同好友功能。這個在奶茶活動中有運用,就是利用set儲存使用者之間的點讚關聯的,另外在點讚前判斷是否點讚過就利用了sismember方法,當時這個介面的響應時間控制在10毫秒內,十分高效。

9、佇列 由於redis有list push和list pop這樣的命令,所以能夠很方便的執行佇列操作。

Redis應用場景

redis開創了一種新的資料儲存思路,使用redis,我們不用在面對功能單調的資料庫時,把精力放在如何把大象放進冰箱這樣的問題上,而是利用redis靈活多變的資料結構和資料操作,為不同的大象構建不同的冰箱。redis常用資料型別 redis最為常用的資料型別主要有以下五種 在具體描述這幾種資料型別之...

Redis應用場景

redis開創了一種新的資料儲存思路,使用redis,我們不用在面對功能單調的資料庫時,把精力放在如何把大象放進冰箱這樣的問題上,而是利用redis靈活多變的資料結構和資料操作,為不同的大象構建不同的冰箱。redis常用資料型別 redis最為常用的資料型別主要有以下五種 在具體描述這幾種資料型別之...

Redis應用場景

閱讀 31,232 次 毫無疑問,redis 開創了一種新的資料儲存思路,使用redis,我們不用在面對功能單調的資料庫時,把精力放在如何把大象放進冰箱這樣的問題上,而是利用redis靈活多變的資料結構和資料操作,為不同的大象構建不同的冰箱。希望你喜歡這個比喻。下面是一篇新鮮出爐的文章,其作者是re...