首页 > 数据库 >Redis之list

Redis之list

时间:2024-06-03 22:22:35浏览次数:33  
标签:127.0 mylist 0.1 list Redis 6379 integer

Redis 列表(List)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
一个列表最多可以包含 2^32 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
list可以定义一些规则,使它作为栈、队列或双端队列。

案例

  • LPUSH&RPUSH
127.0.0.1:6379> LPUSH list noe              #将一个值或多个值插入列表头部,最左边
(integer) 1
127.0.0.1:6379> LPUSH list two
(integer) 2
127.0.0.1:6379> LPUSH list tree
(integer) 3
127.0.0.1:6379> LRANGE list 0 -1            #获取list中的值
1) "tree"
2) "two"
3) "noe"
127.0.0.1:6379> RPUSH list right            #将一个值或多个值插入列表尾部,最右边
(integer) 4
127.0.0.1:6379> LRANGE list 0 -1              
1) "tree"
2) "two"
3) "noe"
4) "right"
127.0.0.1:6379> LRANGE list 0 1             #获取list区间中的值
1) "tree"
2) "two"
  • LPOP&RPOP
127.0.0.1:6379> LRANGE list 0 -1              
1) "tree"
2) "two"
3) "noe"
4) "right"

127.0.0.1:6379> LPOP list                   #移除列表中的第一个元素,最左边的
"tree"
127.0.0.1:6379> RPOP list                   #移除列表中的最后一个元素,最右边的
"right"
127.0.0.1:6379> LRANGE list 0 -1
1) "two"
2) "noe"
  • LINDEX
127.0.0.1:6379> LINDEX list 1               #通过下标获取list中的某一个值
"noe"
127.0.0.1:6379> LINDEX list 0
"two"
  • LLEN
127.0.0.1:6379> LLEN list                   #获取list的长度
(integer) 2
  • LREM

count > 0: 从头到尾删除值为 value 的元素。
count < 0: 从尾到头删除值为 value 的元素。
count = 0: 移除所有值为 value 的元素。
比如, LREM list -2 “hello” 会从列表key中删除最后两个出现的 “hello”。
需要注意的是,不存在key会被当作空list处理,所以当 key 不存在的时候,这个命令会返回 0。

127.0.0.1:6379> LRANGE list 0 -1
1) "two"
2) "noe"
3) "right"
4) "hello"
5) "hello"

127.0.0.1:6379> LREM list 1 right          #移除list中指定的值right(从左到右)  
(integer) 1
127.0.0.1:6379> LRANGE list 0 -1
1) "two"
2) "noe"
3) "hello"
4) "hello"

127.0.0.1:6379> LREM list 2 hello
(integer) 2
127.0.0.1:6379> LRANGE list 0 -1
1) "two"
2) "noe"
  • LTRIM
127.0.0.1:6379> rpush mylist hello
(integer) 1
127.0.0.1:6379> rpush mylist hello1
(integer) 2
127.0.0.1:6379> rpush mylist hello2
(integer) 3
127.0.0.1:6379> rpush mylist hello3
(integer) 4
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> LTRIM mylist 1 2             #通过下表截取指定长度,这个list只剩下截取的元素(从第一个截取两个元素)
OK
127.0.0.1:6379> lrange mylist 0 -1
1) "hello1"
2) "hello2"
127.0.0.1:6379>
  • rpoplpush

移除列表中的最后一个元素并将它移动到新的列表中。

127.0.0.1:6379> rpush mylist hello
(integer) 1
127.0.0.1:6379> rpush mylist hello1
(integer) 2
127.0.0.1:6379> rpush mylist hello2
(integer) 3
127.0.0.1:6379> rpoplpush mylist myotherlist
"hello2"
127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello"
2) "hello1"
127.0.0.1:6379> LRANGE myotherlist 0 -1
1) "hello2"
  • lset

将列表中指定的值替换成新的值,更新操作

127.0.0.1:6379> EXISTS list
(integer) 0
127.0.0.1:6379> lset list 0 item                #如果列表不存在,报错
(error) ERR no such key
127.0.0.1:6379> lpush list value1
(integer) 1
127.0.0.1:6379> lrange list 0 0
1) "value1"
127.0.0.1:6379> lset list 0 item               #如果列表存在,更新当前下表的值为新的值
OK
127.0.0.1:6379> lrange list 0 0
1) "item"
127.0.0.1:6379> lset list 1 other
(error) ERR index out of range
  • linsert

将某一个具体的值,插入到列表中某个元素的前边或后边

127.0.0.1:6379> RPUSH mylist hello
(integer) 1
127.0.0.1:6379> RPUSH mylist world
(integer) 2
127.0.0.1:6379> LINSERT mylist before world orther
(integer) 3
127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello"
2) "orther"
3) "world"
127.0.0.1:6379> LINSERT mylist after world new
(integer) 4
127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello"
2) "orther"
3) "world"
4) "new"

参考

https://redis.com.cn/commands/lrem.html

标签:127.0,mylist,0.1,list,Redis,6379,integer
From: https://www.cnblogs.com/OpenSourceSite/p/18221980

相关文章

  • 面试必会->Redis篇
    01-你们项目中哪里用到了Redis?在我们的项目中很多地方都用到了Redis,Redis在我们的项目中主要有三个作用:使用Redis做热点数据缓存/接口数据缓存使用Redis存储一些业务数据,例如:验证码,用户信息,用户行为数据,数据计算结果,排行榜数据等使用Redis实现分布......
  • [redis 源码走读] - 跳跃表(skiplist)
    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!阶段1、深入多线程阶段2、深入多线程设计模式阶段3、深入juc源码解析阶段4、深入jdk其余源码解析......
  • HarmonyOS NEXT星河版之自定义List下拉刷新与加载更多
    文章目录一、加载更多二、下拉刷新三、小结一、加载更多借助List的onReachEnd方法,实现加载更多功能,效果如下:@ComponentexportstructHPList{//数据源@PropdataSource:object[]=[]//加载更多是否ing@StateisLoadingMore:boolean=false......
  • synchronized、Lock本地锁和Redisson分布式锁的简单使用
    文章目录概念准备工作synchronized本地锁演示JUC包的Lock本地锁演示Redisson的RLock分布式锁演示源码地址参考来源概念redisson是一个简单易用的Redis客户端工具。不仅如此,它还具备分布式锁的功能准备工作快速整合SSMP请参考我这篇文章SpringBoot快速整合Spring......
  • redis - [02] 安装部署
    在Windows和Linux操作系统下的安装部署  一、windows版(1)访问redis下载地址:https://github.com/tporadowski/redis/releases(2)将Redis-x64-5.0.14.1.zip下载并解压到合适的目录(3)打开cmd窗口,切换到该目录下运行:redis-server.exeredis.windows.conf运行之后,redis服务就......
  • redis自学(45)缓存同步
                             整个多级缓存的架构  ......
  • redis - [01] 概述
    题记部分 一、什么是redis  是一个由SalvastoreSanfilippo使用ANSIC语言编写的key-value存储系统,遵守BSD协议、支持网络、可基于内存、分布式、可选持久性的跨平台的非关系型数据库,并提供多种语言的API。Redis通常被称为数据结构服务器,因为值可以是字符串、哈希、列表、......
  • [工具] png图片打包plist工具,手把手教你使用pngPackerGUI_V2.0
    png图片打包plist工具,手把手教你使用pngPackerGUI_V2.0此软件是在pngpacker_V1.1软件基础之后,开发的界面化操作软件,方便不太懂命令行的小白快捷上手使用。1.下载并解压缩软件,得到如下目录,双击打开pngPackerGUI.exe 2.打开pngPackerGUI之后,默认的界面如下: 3.选择目录:选......
  • 【Redis】Redis集群脑裂的原因及解决方案
    Redis集群脑裂(Split-Brain)是指在集群模式下,网络分区或节点故障导致集群中的一部分节点失去与其他节点的连接,从而出现多个孤立的子集群,各自认为自己是独立的主集群。这种情况可能导致数据不一致和服务不可用。脑裂的成因网络分区:网络故障导致集群中的部分节点无法互相通信......
  • 【Redis】什么是缓存击穿 ? 怎么解决
    缓存击穿(CacheBreakdown)是指缓存中某个热点数据在某一时刻失效,大量并发请求同时查询这个数据,由于缓存失效,这些请求会直接打到数据库,可能导致数据库瞬间负载过高,甚至崩溃。与缓存穿透不同,缓存击穿是针对一个特定的热点数据在高并发场景下的失效问题。解决缓存击穿的方法......