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,在线聊天时,能够用到

更多内容请关注微信公众号:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值