link 链表结构

作者:吴泽鑫 分类: Redis 发布于:2015-11-1 21:47 ė546次浏览 60条评论

lpush key value

作用: 把值插入到链接头部

例子:

127.0.0.1:6379> lpush list a b c d e
(integer) 5
127.0.0.1:6379> lrange list 0 -1
1) "e"
2) "d"
3) "c"
4) "b"
5) "a"



rpop key

作用: 返回并删除链表尾元素


rpush,lpop: 不解释

例子:

127.0.0.1:6379> rpop list
"a"



lrange key start  stop

作用: 返回链表中[start ,stop]中的元素

规律: 左数从0开始,右数从-1开始

例子:

127.0.0.1:6379> lrange list 0 -1
1) "e"
2) "d"
3) "c"
4) "b"




lrem key count value

作用: 从key链表中删除 value值

注: 删除count的绝对值个value后结束

Count>0 从表头删除

Count<0 从表尾删除

例子:

127.0.0.1:6379> rpush list a c d s a c d
(integer) 7
127.0.0.1:6379> lrange list 0 -1
1) "a"
2) "c"
3) "d"
4) "s"
5) "a"
6) "c"
7) "d"
127.0.0.1:6379> lrem list 2 a
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "c"
2) "d"
3) "s"
4) "c"
5) "d"



ltrim key start stop

作用: 剪切key对应的链接,切[start,stop]一段,并把该段重新赋给key

例子:

127.0.0.1:6379> lrange list 0 -1
1) "c"
2) "d"
3) "s"
4) "c"
5) "d"
127.0.0.1:6379> ltrim list 1 3
OK
127.0.0.1:6379> lrange list 0 -1
1) "d"
2) "s"
3) "c"



lindex key index

作用: 返回index索引上的值,

如  lindex key 2

例子:

127.0.0.1:6379> lrange list 0 -1
1) "d"
2) "s"
3) "c"
127.0.0.1:6379> lindex list 2
"c"



llen key

作用:计算链接表的元素个数

例子:

127.0.0.1:6379> lrange list 0 -1
1) "d"
2) "s"
3) "c"
127.0.0.1:6379> llen list
(integer) 3



linsert  key after|before search value

作用: 在key链表中寻找’search’,并在search值之前|之后,.插入value

注: 一旦找到一个search后,命令就结束了,因此不会插入多个value

例子:

127.0.0.1:6379> lrange list 0 -1
1) "d"
2) "s"
3) "c"
127.0.0.1:6379> linsert list after c d
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "d"
2) "s"
3) "c"
4) "d"
127.0.0.1:6379> linsert list before s e
(integer) 5
127.0.0.1:6379> lrange list 0 -1
1) "d"
2) "e"
3) "s"
4) "c"
5) "d"




rpoplpush source dest

作用: 把source的尾部拿出,放在dest的头部,

并返回 该单元值

场景: task + bak 双链表完成安全队列

Task列表                             bak列表

     

     

 


业务逻辑:

1:Rpoplpush task bak

2:接收返回值,并做业务处理

3:如果成功,rpop bak 清除任务. 如不成功,下次从bak表里取任务

例子:

127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> rpush list1 a b c d
(integer) 4
127.0.0.1:6379> rpush list2 e f c h
(integer) 4
127.0.0.1:6379> lrange list1 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
127.0.0.1:6379> lrange list2 0 -1
1) "e"
2) "f"
3) "c"
4) "h"
127.0.0.1:6379> rpoplpush list1 list2
"d"
127.0.0.1:6379> keys *
1) "list2"
2) "list1"
127.0.0.1:6379> lrange list1 0 -1
1) "a"
2) "b"
3) "c"
127.0.0.1:6379> lrange list2 0 -1
1) "d"
2) "e"
3) "f"
4) "c"
5) "h"



brpop ,blpop  key timeout

作用:等待弹出key的尾/头元素,

Timeout为等待超时时间

如果timeout为0,则一直等待

场景: 长轮询Ajax,在线聊天时,能够用到


本文出自 Jensen-吴泽鑫的博客,转载时请注明出处及相应链接:http://www.wuzexin.cn/post-5.html

发表评论

电子邮件地址不会被公开。必填项已用*标注


Ɣ回顶部