目录
一、简介
二、命令合集
三、list应用
一、简介
redis中list采用双向链表结构,和java的LinkedList很相似,通过void *指针保存value,可以存储包括字符串在内的多种数据类型,具有有序可重复特点。
二、命令合集
- list命令主要是对列表的增删查改。常用命令会加粗
- BLPOP 阻塞地弹出一个列表最左(最前)元素,没有元素时会等待,直到等待超时 。 等待一个列表元素,添加一个aa,弹出元素。
- BRPOP 阻塞地弹出最右元素。跟BLPOP相似
- BRPOPLPUSH ,,阻塞地弹出source最右元素,并把它放在destination最左边。
- LINDEX , 获取index处的值 ,
- LINSERT , 列表中插入一个value,, BEFORE | AFTER 二选一,分别表示前 | 后,, pivot 为参考值,即要插入到哪个值前后,,value为插入值
- LLEN , 获取列表长度
- LPOP , 弹出最左边
- LPUSH | LPUSHX ,, ,都是向列表左添加元素, lpushx要求列表事先存在。
- LRANGE , 截取列表部分元素。start stop分别代表起始位置和结束位置,为负数时表示从倒数。 lrange 0 5 列出偏移量0-5的元素,含头含尾。 lrange -3 -1 列出倒数后面三个,含头含尾。
- LREM , 删除count个指定value。 count > 0 时,从左向右删除;count < 0 时,从右往左删除。
- LSET , 将index出设置成新value
- LTRIM , 列表裁剪。,将l1裁剪,保存0至5间元素。ltrim 会改变列表, lrange不会。
- RPOP , 右弹出一个元素
- RPOPLPUSH 弹出source最右元素,并把它放在destination最左边。
- RPUSH , 向列表右(尾)添加元素
- RPUSHX 向列表右(尾)添加元素,要求列表实现存在
三、list应用
- 消息队列 生产者lpush将消息存入某个列表,消费者brpop消费消息,没有收到消息则阻塞等待,,只能做比较简单的,容错性比较低。 ,存入消息 ,读取消息,超时时间为0时不超时。
- 缓存最新登陆用户、最新新闻等 lpush添加,ltrim取最新添加的条数。 ,,
- 全页缓存 有时会需要对某个页面分页数据进行缓存,可以将查询出的数据按页编号从小到大进行排序,,rpush进一个列表,这样列表中页面是有序存储的。 ,pages中添加每一页的json数据,,,查看所有页数据,每页一条数据,,查询第三页数据(偏移量为2)