redis 之四: link 鏈表結構

lpush key value

  • 作用: 把值插入到鏈接頭部

rpop key

  • 作用: 返回並刪除鏈表尾元素

rpush,lpop: 不解釋

lrange key start stop

  • 作用: 返回鏈表中[start ,stop]中的元素
  • 規律: 左數從0開始,右數從-1開始

代碼練習

127.0.0.1:6379> lpush character a
(integer) 1
127.0.0.1:6379> rpush character b 
(integer) 2
127.0.0.1:6379> rpush character c
(integer) 3
127.0.0.1:6379> lpush character 0
(integer) 4
127.0.0.1:6379> lrange character 1 2
1) "a"
2) "b"
127.0.0.1:6379> lrange character 1 3
1) "a"
2) "b"
3) "c"
127.0.0.1:6379> lrange character 0 3
1) "0"
2) "a"
3) "b"
4) "c"
127.0.0.1:6379> lrange character 0 -1
1) "0"
2) "a"
3) "b"
4) "c"
127.0.0.1:6379> lpop character
"0"
127.0.0.1:6379> lrange character 0 -1
1) "a"
2) "b"
3) "c"
127.0.0.1:6379> rpop character
"c"
127.0.0.1:6379> lrange character 0 -1
1) "a"
2) "b"

lrem key count value

  • 作用: 從key鏈表中刪除 value值
  • 注: 刪除count的絕對值個value後結束
    • Count>0 從表頭刪除
    • Count<0 從表尾刪除
127.0.0.1:6379> lpush answer a b c a b d a
(integer) 7
127.0.0.1:6379> lrange answer 0 -1
1) "a"
2) "d"
3) "b"
4) "a"
5) "c"
6) "b"
7) "a"
127.0.0.1:6379> lrem answer 1 b
(integer) 1
127.0.0.1:6379> lrange answer 0 -1
1) "a"
2) "d"
3) "a"
4) "c"
5) "b"
6) "a"
127.0.0.1:6379> lrem answer -2 a
(integer) 2
127.0.0.1:6379> lrange answer 0 -1
1) "a"
2) "d"
3) "c"
4) "b"

ltrim key start stop

  • 作用: 剪切key對應的鏈接,切[start,stop]一段,並把該段重新賦給key
127.0.0.1:6379> rpush character a b c d e f
(integer) 6
127.0.0.1:6379> lrange character 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
6) "f"
127.0.0.1:6379> ltrim character 2 5
OK
127.0.0.1:6379> lrange character 0 -1
1) "c"
2) "d"
3) "e"
4) "f"

lindex key index

  • 作用: 返回index索引上的值,
  • 如 lindex key 2

llen key

  • 作用:計算鏈接表的元素個數
redis 127.0.0.1:6379> llen task
(integer) 3

linsert key after|before search value

  • 作用: 在key鏈表中尋找’search’,並在search值之前|之後,.插入value
  • 注: 一旦找到一個search後,命令就結束了,因此不會插入多個value

rpoplpush source dest

  • 作用: 把source的尾部拿出,放在dest的頭部,並返回 該單元值

  • 場景: task + bak 雙鏈表完成安全隊列

    • Task列表
    ----------
    |  |  |  |
    ----------
    
    • bak列表
    ----------
    |  |  |  |
    ----------
    
    • 業務邏輯:
      • 1:Rpoplpush task bak
      • 2:接收返回值,並做業務處理
      • 3:如果成功,rpop bak 清除任務. 如不成功,下次從bak表裏取任務

brpop ,blpop key timeout

  • 作用:等待彈出key的尾/頭元素,
  • Timeout爲等待超時時間
  • 如果timeout爲0,則一直等待
  • 場景: 長輪詢Ajax,在線聊天時,能夠用到

更多內容請關注微信公衆號:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章