Redis 學與思系列 3

2021-09-24 08:21:36 字數 1428 閱讀 1873

列表用來儲存有序的元素,(這裡的有序指加入列表的順序),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介紹與安裝

這個redis系列的文章將會記錄博主學習redis的過程。基本上現在的網際網路公司都會用到redis,所以學習這門技術於你於我都是有幫助的。博主在寫這個系列是用的是目前最新版本4.0.10,虛擬機器裝的是4.0.10,為了方便window也安裝了 版本3.2.100 後續命令會採用命令列,jedis...

golog 我的go學與思1

在寫a new way to cpp的時候我想用資料庫來引入 i o模型,併發,資料結構的概念。發現我很尷尬的不知道從何起筆。找遍網際網路的資料,知乎大佬上來就是大三作業做過資料庫,高屋建瓴的說這說那,太不接地氣。恰好此時,我發現了tidb發起了乙個talent plan的專案,可以選擇學習路線。我...

golog 我的go學與思5

sum 0for i 0 i 10 i 就是沒有 包裹。可以,其中init,condition,post statement都可以預設 sum 1for 可以寫為 sum 1for sum 1000 或者 for這就是go沒有while的理由?懶得寫詞法?不給語法糖?if x 0我差點以為if也得用...