Redis 學與思系列(3)
上篇文章中簡單的介紹和總結了一下字串型別的key的相關操作命令以及其適用場景,今天接著上篇文章的內容講解redis其他的資料型別的相關指令以及其對應的使用場景。
列表型別:
列表用來儲存有序的元素,(這裡的有序指加入列表的順序),redis 支援對列表2端進行插入和彈出,還可以獲取指定範圍,指定下標的元素。 複製程式碼
這裡簡單的介紹列表的幾種操作指令:
命令:RPUSH key value [value ...]
將一個或多個值 value 插入到列表 key 的表尾(最右邊)。 如果有多個 value 值,那麼各個 value 值按從左到右的順序依次插入到表尾. 如果 key 不存在,一個空列表會被建立並執行 RPUSH 操作。 複製程式碼
應用場景:
非同步佇列:該指令可以和`LPOP` 指令結合起來構成非同步佇列. 當然與之對應的還有指令`LPUSH` 和`RPOP`。當然結合`BLPOP`等相關指令可以實現 帶阻塞功能的非同步佇列. 複製程式碼
命令: LRANGE key start stop
返回列表 key 中指定區間內的元素,區間以偏移量 start 和 stop 指定。 下標(index)引數 start 和 stop 都以 0 為底,也就是說,以 0 表示列表的第一個元素,以 1 表示列表的第二個元素,以此類推。 你也可以使用負數下標,以 -1 表示列表的最後一個元素, -2 表示列表的倒數第二個元素,以此類推。 複製程式碼
應用場景:
分頁: 藉助於lrange的功能,我們可以實現分頁功能。 複製程式碼
集合型別
集合型別一個重要的特點是集合中不允許有重複元素,當然集合中的元素是無序的(這裡的順序指的也是加入集合時元素的順序)。 集合提供了很多有用的指令,比如判斷某個元素是否存在的`SISMEMBER` ,返回指的集合的基數(元素個數)`SCARD` ,以及多個集合取差集,並集等等相關指令。 複製程式碼
應用場景:
統計和查詢: 藉助集合的去重特性以及SCARD,SISMEMBER 指令,可以考慮用集合來進行統計和查詢功能。 隨機數:藉助`SRANDMEMBER`和`spop` 指令返回集合中的隨機數,比如年會抽獎的時候就可以用這個生成簡單的隨機數 複製程式碼
有序集合資料型別
有序集合相比普通集合而言,這個有序體現在每個元素的score 上,這個有序和列表的有序是不一樣的,列表強調的是元素新增時的順序,有序集合是按照元素的score值進行排序的。有很多很有用的指令:如`ZRANGEBYSCORE`返回特定範圍內的元素。 複製程式碼
適用場景:
統計topN 的場景: 簡單限流:通過zremrangebyscore 移除特定的元素,以及ZCARD 統計元素的數量,構造一個簡單的滑動視窗(比如10秒內),實現限流 複製程式碼
後記
本文只是簡單的闡述了一下redis的部分 資料型別以及一些可用的場景,當然個人理解可能不一定完全正確。後面的文章中會結合其他的問題繼續分享redis的其他特性。