数据结构(三)

#################################链表(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,观察会发现在第一个终端中出现了链表尾部信息。

原文地址:https://www.cnblogs.com/dormant/p/5087126.html