Redis系列-5.列表(List)结构

Redis系列-5.列表(List)结构

文章中可能有地方描述偏差,欢迎留言指证

1.基本

List是第三种redis结构,在C#中指的是泛型集合,和这里的不太一样。redis里的list更像是数组,而且在使用中也经常会利用它实现队列和栈。

2.常用命令

下面所有描述里 {}都是必需参数,<>是可选参数

添加操作

从右边插入元素
rpush {key} {value} < value >
从左边插入元素
lpush {key} {value} < value>
列表是分方向的,这样才可以实现队列和栈的功能。这个插入是有顺序的。。比如从左边插入123 那遍历之后会发现顺序是321.这个命令可以理解为把这多个参数每次都向左或是向右插入,就不容易搞晕了。
这里写图片描述

查找

lrange {key} {start} {end} 获取范围内的元素
如上面那图,-1是指末尾。
如果是范围查询(end是包括在里面的):
这里写图片描述

lindex {key} {index} 获取指定下标的元素
这里写图片描述

llen {key}获取列表的长度
这里写图片描述

删除(重点)

从列表左侧删除一个
lpop {key}
从列表右侧删除一个
rpop {key}
这两条命令要注意顺序,不然可能你以为你写的是从左删,结果是从右删了。

删除指定的元素
lrem {key} {count} {value}
这条命令会删除列表里值为value的数据,同时删除count个
count>0 从左向右删count个
count<0 从右向左删count个
count=0 删除所有等于value的

按照索引范围修剪元素
ltrim {key} {start} {end}
这条命令只会保留这个范围内的元素,包括开头和结尾的数据。
这里写图片描述
注意:如果键不存在 trim也会返回ok

修改

lset {key} {index} {newValue}
将指定索引的值替换为新值

阻塞(重点)

blpop key < key…> timeout
brpop key < key…> timeout
这两个命令是弹出明亮的阻塞式版本。这个阻塞的意思就是一直等待 直到获取到数据。
timeout是阻塞的时间,0代表一直阻塞,直到可以弹出

1.在阻塞的时间内,如果有数据进来,或是方向上(命令分左右的)有数据可以马上弹出,会马上返回新添加的数据。
2.如果有阻塞多个键,那么redis会从左向右遍历键,只要有一个可以键中有数据可以弹出,会马上返回弹出的键的名字和数据。
3.如果多个客户端对同一个键执行阻塞式弹出操作,第一命令的到达者会最先获取到数据。这时,客户端的发出+网络延迟会导致谁先到达。

3.内部编码

有两种:
ziplist:
内部更加紧凑。
当键的个数小于list-max-ziplist-entries(默认512)的配置时
同时所有值小于listmax-ziplist-value(默认64)的配置时
才会使用ziplist,和哈希结构一样
linkedlist:链表
当不能使用ziplist时,就会使用这个结构,因为不满足上面两个条件时,ziplist的读写效率会降低。

4.适合场景

1.消息队列
lpush+brpop命令的组合可以实现阻塞式队列。生产者从左侧插入,多个客户端在右端“抢”元素2

2.分页
当需要分页时,因列表是有序的,就可以利用按范围获取元素来取得数据。

开发中有许多场景,可以参考以下口诀;
1.lpush+lpop=Stack(栈)
2.lpush+rpop=Queue(队列)
3.lpush+ltrim=Capped Collection(有限集合)
4.lpush+brpop=Message Queue(消息队列)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
redis-cli是Redis提供的命令行接口工具,用于与Redis服务器进行交互。它提供了一系列命令,用于操作和管理Redis数据库。以下是一些常用的redis-cli命令: 1. 连接到Redis服务器:redis-cli -h host -p port -a password -h参数指定服务器主机名,-p参数指定服务器端口号,-a参数指定密码,可以通过这个命令来连接到Redis服务器。 2. 设置键值对:SET key value 该命令用于在Redis中设置键值对,key是键名,value是对应的值。 3. 获取键值对:GET key 该命令用于获取Redis中指定键的值。 4. 删除键值对:DEL key 该命令用于删除Redis中指定的键值对。 5. 查看所有键:KEYS pattern 该命令用于查看Redis中符合指定模式的所有键。 6. 查看键的类型:TYPE key 该命令用于查看Redis中指定键的数据类型。 7. 列出所有键的值:MGET key1 key2 ... 该命令用于一次性获取多个键的值。 8. 列出所有键值对:HGETALL key 该命令用于查看Redis哈希类型数据结构中指定键的所有字段和对应的值。 9. 增加键的值:INCR key 该命令用于将Redis中指定键的值增加1。 10. 减少键的值:DECR key 该命令用于将Redis中指定键的值减少1。 以上是一些常见的redis-cli命令,通过这些命令可以进行Redis数据库的操作和管理。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [redis-cli操作命令.txt](https://download.csdn.net/download/xilangyuyun/12580971)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [redis-cli:golang的redis-cli](https://download.csdn.net/download/weixin_42173218/15559284)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [redis-cli命令二进制包,linux环境独立可运行](https://download.csdn.net/download/qq_43626147/86393793)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值