Redis数据类型之列表List

Redis数据类型之列表List

Redis数据类型之列表List_第1张图片

list中的命令如下:

  1. lpush:从左边插入,插入的数据是倒叙
    LPUSH key value1 [value2]
    将一个或多个值插入到列表头部
    Redis数据类型之列表List_第2张图片
    lpush k1 a b c d e f ; 输出结果 f e d c b a
    lpop k1; 输出 f
    从左边pop弹出时先弹出的是f,因为从左边push的时候先放a,然后在a的左边再放b,所以顺序是 f e d c b a,导致从左边弹出的时候先弹出 f ,下面介绍LPOP的命令

这里可以看出来list列表有栈的特性:先进后出FILO

  1. rpush:从尾部添加,正序添加 ,rpush k2 a b c d e f --输出结果 a b c d e f
    RPUSH key value1 [value2]
    在列表中添加一个或多个值到列表尾部
    Redis数据类型之列表List_第3张图片
    Rpush k2 a b c d e f ; 输出结果a b c d e f
    Lpop k2; 输出 a
    这里用到了反向命令,LPOP,没有用到RPOP。这样可以实现队列特性
    这里可以看出来list列表有队列的特性:先进先出FIFO

  2. LPOP:相当于从左往右开始获取一个元素。既第一个元素
    LPOP key
    移出并获取列表的第一个元素
    在这里插入图片描述
    因为k1 的顺序是f e d c b a

  3. RPOP:相当于从右往左开始获取一个元素。既获取最后一个元素
    RPOP key
    移除列表的最后一个元素,返回值为移除的元素。
    在这里插入图片描述
    因为k2的顺序是 a b c d e f

  4. lindex:
    LINDEX key index
    通过索引获取列表中的元素

  5. linsert:这里的pivot 不是索引,是列表中元素的值,
    LINSERT key BEFORE|AFTER pivot value
    在列表的元素前或者后插入元素
    Redis数据类型之列表List_第4张图片
    pivot 表示列表中的值,不是索引。而且他会从左开始找,找到第一个出现的元素在他后面设置值,因为我用的是after 所以是在a后面

  6. Llen
    LLEN key
    获取列表长度

  7. Lrem:count表示移除几个元素,从左往右数出现的count个value移除。
    LREM key count value
    移除列表元素

  8. Lset:给指定位置设置值
    LSET key index value
    通过索引设置列表元素的值

  9. Ltrim:只保留strat-end之间的数,其他全去掉。小于start,大于end的。开区间
    LTRIM key start stop
    对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
    从这里可以看出列表list还有数组的特性

  10. BLpop:表示没有元素则阻塞等待,有则从左边开始弹出1个。而且他有顺序。比如第一个客户端执行这个命令等待中,第二个客户端也执行同样命令等待中,一旦里面有值,则第一个客户端先弹出,第二个没有任何反应,知道再有一个值进入是,第二个才会弹出
    BLPOP key1 [key2 ] timeout
    移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

  11. BRpop:和上面一样,只不过弹出最后一个
    BRPOP key1 [key2 ] timeout
    移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

这可以实现一个功能就是消息队列,只不过是单波队列,

第一张图是对整个list的总结

你可能感兴趣的:(Redis学习,redis,list,缓存,队列,栈,数组)