redis-lists 类型及操作

时间:2016-11-17 15:02:57 阅读:616次
redis-lists 类型及操作

list 是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等,操作中key 理解为链表的名字。Redis 的list 类型其实就是一个每个子元素都是string 类型的双向链表。链表的最大长度是(2的32 次方)。我们可以通过push,pop 操作从链表的头部或者尾部添加删除元素。这使得list既可以用作栈,也可以用作队列。有意思的是list 的pop 操作还有阻塞版本的,当我们[lr]pop 一个list 对象时,如果list 是空,或者不存在,会立即返回nil。但是阻塞版本的b[lr]pop 可以则可以阻塞,当然可以加超时时间,超时后也会返回nil。为什么要阻塞版本的pop 呢,主要是为了避免轮询。举个简单的例子如果我们用list 来实现一个工作队列。执行任务的thread 可以调用阻塞版本的pop 去获取任务这样就可以避免轮询去检查是否有任务存在。当任务来时候工作线程可以立即返回,也可以避免轮询带来的延迟。说了这么多,接下来看一下实际操作的方法吧:


lpush key value [value ..] 在key 对应list 的头部添加字符串元素

rpush key value [value ..] 在key 对应list 的尾部添加字符串元素

linsert key before|after pivot value 在key 对应list 的特定位置之前或之后添加字符串元素

lset key index value  设置list 中指定下标的元素值(下标从0 开始)

lrem key count value 从key 对应list 中删除count 个和value 相同的元素。count>0 时,按从头到尾的顺序删除,count<0 时,按从尾到头的顺序删除,count=0 时,删除全部
ltrim key start stop 保留指定key 的值范围内的数据 

lpop key 从list 的头部删除元素,并返回删除元素

rpop key 从list 的尾部删除元素,并返回删除元素

rpoplpush 从第一个list 的尾部移除元素并添加到第二个list 的头部,最后返回被移除的元素值,整个操作是原子的.如果第一个list 是空或者不存在返回nil

lindex key index 返回名称为key 的list 中index 位置的元素

llen key 返回key 对应list 的长度

扫描二维码关注程序员爱笔记,接收更多资讯

评论

快速评论