数据结构(三)
#################################链表(list)################################
这次的主题是链表在redis中的命令;
(1)lpush (key) (value) //把值插入到链表头部
rpush (key) (value) //把值插到链表尾部
(2)lrange (key) [start, stop] //取出链表从start到stop的值 其中最左用0表示,最右用-1表示
(3)lpop (key) //返回并删除链表首部的值
rpop (key) //返回并删除链表尾部的值
(4)lrem (key) (count) (value) //从链表中删除count个value ,其中count表示删除几个,大于0从头部删除,小于0从尾部删除
(5) ltrim (key) (count) (value) //截取某段值并且重新赋值给key
如下图截取链表索引从1到3的值赋值给num
(6)lindex (key) [start, stop] //返回index索引上的值
(7)llen (key) //链表长度
(8)linsert (key) after/before (search) (value) //在链表中寻找search ,并在search值之前/之后插入value,一旦找到一个search后,命令就结束了,因此不会插入多个value
如下图:在链表num中的8后边插入7
(9)rpoplpush (source) (dest) //把source尾部拿出放到dest头部,并返回该单元指,这里source 和dest都表示链表,因此这是在两个链表上进行操作
(10)brpop / blpop (key) (timeout) //等待弹出key的尾/头元素 其中timeout为等待超时时间,timeout=0表示一直等待
下图我们需要打开两个终端,查看num链表为空。设置brpop num 30 等待30秒。在另一个终端中建立一个链表num,观察会发现在第一个终端中出现了链表尾部信息。