您的位置:首页 > 数据库 > Redis

redis List链表结构

2016-03-19 12:25 597 查看
redis列表是简单的字符串列表,按照插入顺序排序

redis 127.0.0.1:6379> LPUSH course redis

redis 127.0.0.1:6379> LPUSH course mongodb

redis 127.0.0.1:6379> LPUSH course mysql

redis 127.0.0.1:6379> LRANGE course 0 -1

1) "mysql"

2) "mangodb"

3) "redis"

------------------------------------------------

也可以一次性设置进去:

redis 127.0.0.1:6379> LPUSH course redis mongodb mysql

redis 127.0.0.1:6379> LRANGE course 0 -1

1) "mysql"

2) "mangodb"

3) "redis"

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

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

rpush,lpop: 不解释

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

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

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

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

Count>0 从表头删除

Count<0 从表尾删除

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

 

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

如  lindex key 2

 

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

redis 127.0.0.1:6379> llen task

(integer) 3

redis 127.0.0.1:6379>

 

linsert  keyafter|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  keytimeout
作用:等待弹出key的尾/头元素,

Timeout为等待超时时间

如果timeout为0,则一直等待

场景: 长轮询Ajax,在线聊天时,能够用到
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: