【Redis】基本資料型別常用操作 - List
阿新 • • 發佈:2021-06-17
在redis裡,可以把list巧妙的運用成 棧、佇列、阻塞佇列等。
一、push 插入元素
1. lpush,在頭部插入
將一個值或者多個值,插入到列表的頭部。
lpush list one
lpush list two
lpush list three
使用lpush
,這裡的l可以看成left,也就是在左邊插入,所以目前list是這樣的[three, two, one]
。
2. rpush,在尾部插入
接下來,使用rpush
,在右邊也就是在列表尾部插入元素。
rpush list right1 right2
此時,list是這樣的[three, two, one, right1, right2]
lrange list 0 -1
來獲取下:
二、range 通過區間獲取元素
可以想象成python裡的range()
,通過傳入開始和結束的下標,獲取元素。
lrange list 1 4
三、pop 移除元素
既然上面可以左右的新增操作,那麼移除自然也有左右之分了。
移除操作,返回的是被移除的元素。
1. lpop 左邊移除
lpop list
2. rpop 右邊移除
rpop list
四、lindex 通過下標獲取元素
lindex list 1
五、llen 獲取list長度
返回列表的長度。
llen list
六、lrem 移除指定元素
可以指定移除元素,並且指定數量。
lrem list 2 yi222
現在list裡有3個yi222,我要移除2個。
七、ltrim 修剪
通過ltrim
只保留指定的部分,去掉其他的部分,被擷取的list發生改變。
ltrim list 1 4
這裡下標從1到4的都保留,其他都被去掉了。
八、組合命令 rpoplpush 移除並新增
這是組合命令,移除list最後一個元素,並且將它新增到另一個list。
rpoplpush list list2
這裡list
是原列表,list2
是目標列表,目標列表不存在會去建立。
九、exists 判斷key 是否存在
exists list
存在返回1,不存在就返回0。
十、lset,設定指定下標的值
lset list 1 test
當索引引數超出範圍,或對一個空列表進行 LSET 時,返回一個錯誤。
十一、linsert,指定位置之前/之後插入值
之前
linsert list before test before_test
這是在元素test
之前,插入元素before_test
。
之後
linsert list after test after_test
這是在元素test
之後,插入元素after_test
。
十二、小結
從上述list的操作中,可以觀察出它的一些特點:
- 它實際上是一個連結串列,節點的左右都方便插入。
- 如果key不存在,會建立新的連結串列。
- 如果key存在,就新增元素。
- 如果移除了所有的值,就是空連結串列,也就是不存在。
- 在兩邊插入或者改動值,效率最高。中間的元素操作,效率相對低。
list在實際中可以靈活運用,比如佇列,棧,都能用list來實現。