`

Redis系列-存储篇list主要操作函数小结

 
阅读更多

在总结list之前,先要弄明白几个跟list相关的概念:

列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出。

表头元素:列表最左端第一个元素。

表尾元素:列表最右端的最后一个元素。不包含任何元素的列表成为空列表。

1)新增

a)lpush

语法:lpush key value[value]

解释:把一个或多个元素插入表头。如果是多个value时,按照从左到右的次序插。返回插入元素的个数

 

[plain] view plain copy
 
  1. [root@xsf001 ~]# redis-cli  
  2. redis 127.0.0.1:6379> lpush lst.user zhangsan   #插入一个元素  
  3. (integer) 1  
  4. redis 127.0.0.1:6379> lpush lst.user zhangsan lisi   #插入多个元素,list中允许插入重复的元素  
  5. (integer) 3  


b)lpushx

 

语法:lpushx key value

解释:插入一个表头元素,当且仅当列表key存在时,才能插入。返回列表中元素的个数

 

[plain] view plain copy
 
  1. redis 127.0.0.1:6379> lpushx lst.user wangwu   #列表存在  
  2. (integer) 4  
  3. redis 127.0.0.1:6379> lpushx lst.tech wangwu   #列表不存在,不插入  
  4. (integer) 0  

c)rpush

 

语法:rpush key [value]

解释:将一个或多个值插入到队列的队尾。多值时,从左到右依次添加。返回列表中元素个数

 

[plain] view plain copy
 
  1. redis 127.0.0.1:6379> rpush lst.user ls005     #列表存在  
  2. (integer) 5  
  3. redis 127.0.0.1:6379> rpush lst.tech tec01 tec02 tec03  #列表不存在  
  4. (integer) 3  

d) rpushx

 

语法:rpushx key value

解释:讲值插入到列表队尾,当且仅当列表key存在时,才添加。返回列表元素个数

 

[plain] view plain copy
 
  1. redis 127.0.0.1:6379> rpushx lst.tech tec04  #key 存在  
  2. (integer) 4  
  3. redis 127.0.0.1:6379> rpushx lst.sub englist #key 不存在  
  4. (integer) 0  

e)linsert

 

语法:linsert key before|after pivot value

解释:将值插入到pivot的前面或后面。返回列表元素个数。如果参照点pivot不存在不插入。如果有多个pivot,以离表头最近的为准

 

[plain] view plain copy
 
  1. redis 127.0.0.1:6379> linsert lst.tech after tec04 tec06  #后面插  
  2. (integer) 5   
  3. redis 127.0.0.1:6379> linsert lst.tech before tec06 tec05 #前面插  
  4. (integer) 6   
  5. redis 127.0.0.1:6379> linsert lst.tech before tec08 tec07 #参照点不存在,不插  
  6. (integer) -1  
  7. redis 127.0.0.1:6379> linsert lst.user after zhangsan zhangsan01  #列表中有多个pivot,以从左到右的第一个为准  
  8. (integer) 6  

2)查询

 

a)lindex

语法:lindex key index

解释:通过索引index获取列表的元素。 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推

 

[plain] view plain copy
 
  1. redis 127.0.0.1:6379> lindex lst.user 0  #表头  
  2. "wangwu"   
  3. redis 127.0.0.1:6379> lindex lst.user -1 #表尾  
  4. "ls005"  
  5. redis 127.0.0.1:6379> lindex lst.user 2 #第三个元素  
  6. "zhangsan"  
  7. redis 127.0.0.1:6379> lindex lst.user -2 #倒数第二个元素  
  8. "zhangsan"  

b)lrange

 

语法:lrange key start stop  

解释:获取指定开始和结束范围的一些列元素。0:表头,-1:表尾。如果stop指定的元素在start的左边,返回空列表

 

[plain] view plain copy
 
  1. redis 127.0.0.1:6379> lrange lst.user 0 -1 #返回所有  
  2. 1) "wangwu"  
  3. 2) "lisi"  
  4. 3) "zhangsan"  
  5. 4) "zhangsan01"  
  6. 5) "zhangsan"  
  7. 6) "ls005"  
  8. redis 127.0.0.1:6379> lrange lst.user -1 0  #返回空  
  9. (empty list or set)  
  10. redis 127.0.0.1:6379> lrange lst.user 1 2  #返回多个  
  11. 1) "lisi"  
  12. 2) "zhangsan"  
  13. redis 127.0.0.1:6379> lrange lst.user 1 1   #返回一个元素  
  14. 1) "lisi"  


3)修改

 

lset

语法:lset key index value

解释:设置列表指定索引的值,如果指定索引不存在则报错

 

[plain] view plain copy
 
  1. redis 127.0.0.1:6379> lset lst.user 2 zhangsan1  #设置第三个元素为zhangsan1  
  2. OK  
  3. redis 127.0.0.1:6379> lrange lst.user 0 -1  
  4. 1) "wangwu"  
  5. 2) "lisi"  
  6. 3) "zhangsan1"  
  7. 4) "zhangsan01"  
  8. 5) "zhangsan"  
  9. 6) "ls005"  
  10. redis 127.0.0.1:6379> lset lst.user 6 ls006  #指定索引不存在  
  11. (error) ERR index out of range  

4)删除

 

a)ltrim

语法:ltrim key start stop

解释:保留指定区域的元素,其他元素全部删除

 

[plain] view plain copy
 
  1. redis 127.0.0.1:6379> ltrim lst.user 0 -2  
  2. OK  
  3. redis 127.0.0.1:6379> lrange lst.user 0 -1  
  4. 1) "wangwu"  
  5. 2) "lisi"  
  6. 3) "zhangsan1"  
  7. 4) "zhangsan01"  
  8. 5) "zhangsan"  

b)lrem

 

语法:lrem key count value

解释:移除等于value的元素,当count>0时,从表头开始查找,移除count个;当count=0时,从表头开始查找,移除所有等于value的;当count<0时,从表尾开始查找,移除|count| 个。

 

[plain] view plain copy
 
  1. redis 127.0.0.1:6379> lrange lst.user 0 -1  
  2.  1) "zhangsan"  
  3.  2) "wangwu"  
  4.  3) "lisi"  
  5.  4) "zhangsan1"  
  6.  5) "zhangsan01"  
  7.  6) "zhangsan"  
  8.  7) "lisi"  
  9.  8) "zhangsan"  
  10.  9) "lisi"  
  11. 10) "zhangsan"  
  12. redis 127.0.0.1:6379> lrem lst.user 2 zhangsan #移除前两个zhangsan  
  13. (integer) 2  
  14. redis 127.0.0.1:6379> lrange lst.user 0 -1  
  15. 1) "wangwu"  
  16. 2) "lisi"  
  17. 3) "zhangsan1"  
  18. 4) "zhangsan01"  
  19. 5) "lisi"  
  20. 6) "zhangsan"  
  21. 7) "lisi"  
  22. 8) "zhangsan"  
  23. redis 127.0.0.1:6379> lrange lst.user -1 zhangsan #移除最后一个zhangsan  
  24. (empty list or set)  
  25. redis 127.0.0.1:6379> lrange lst.user 0 -1  
  26. 1) "wangwu"  
  27. 2) "lisi"  
  28. 3) "zhangsan1"  
  29. 4) "zhangsan01"  
  30. 5) "lisi"  
  31. 6) "zhangsan"  
  32. 7) "lisi"  
  33. redis 127.0.0.1:6379> lrem lst.user 0 lisi  #移除所有lisi  
  34. (integer) 3  
  35. redis 127.0.0.1:6379> lrange lst.user 0 -1  
  36. 1) "wangwu"  
  37. 2) "zhangsan1"  
  38. 3) "zhangsan01"  
  39. 4) "zhangsan"  
  40. redis 127.0.0.1:6379>   

c)rpop

 

语法:rpop key

解释:移除并返回表尾元素

 

[plain] view plain copy
 
  1. redis 127.0.0.1:6379> rpop lst.user  
  2. "zhangsan"  

d)lpop

 

语法:lpop key

解释:移除并返回表尾元素

 

[plain] view plain copy
 
  1. redis 127.0.0.1:6379> lpop lst.user  
  2. "wangwu"  

5)其他

 

a)llen

语法:llen key

解释:获取列表长度

 

[plain] view plain copy
 
  1. redis 127.0.0.1:6379> llen lst.user  
  2. (integer) 2  

 

分享到:
评论

相关推荐

    redis2-nginx-module-0.15

    **Redis2-NGINX-Module 0.15 知识详解** Redis2-NGINX-Module 是一个用于 NGINX Web 服务器的扩展模块,它允许开发者将 NGINX 与 Redis 数据库集成,实现高效的数据缓存和交互。这个版本是 0.15,它提供了一系列...

    redis-5.0.5.tar.gz

    redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-...

    Redis-x64-5.0.14.msi和Redis-x64-5.0.14.zip

    Redis是一种开源、高性能的键值对存储系统,广泛应用于缓存、数据库和消息中间件等场景。本资源提供了Redis在Windows平台上的64位版本,包括`.msi`安装包和`.zip`压缩文件。 首先,`.msi`文件是Windows Installer的...

    PyPI 官网下载 | redis-py-cluster-1.1.0.tar.gz

    `redis-py-cluster`的核心类是`RedisCluster`,它提供了一系列的方法,如`set`, `get`, `hset`, `lpush`等,用于与Redis集群进行通信。下面是一个简单的连接示例: ```python from rediscluster import Redis...

    tomcat-redis-session-manager的jar包-包含Tomcat7和Tomcat8

    在性能方面,Redis的内存存储特性使得读写速度极快,适合处理大量并发的session操作。而且,由于数据存储在Redis中,即使服务器重启,session数据也能被保留,避免了传统session丢失的问题。 总结起来,Tomcat-...

    redis++使用说明,windows下编译redis-plus-plus

    在这篇文章中,我们将详细介绍如何在Windows平台下编译Redis++,包括编译hiredis.lib和Win32_Interop.lib静态库文件的过程,然后安装Cmake并编译Redis++,最后进行lib测试验证。 首先,我们需要了解Redis++的组件...

    Redis稳定版 Redis-x64-5.0.14.1.zip

    Redis,全称Remote Dictionary Server,是一款高性能的键值对存储系统,被广泛应用于缓存、数据库和消息中间件等场景。本次提供的版本是Redis的稳定版——Redis-x64-5.0.14.1,针对64位操作系统设计。在深入探讨...

    Redis-x64-5.0.14.1

    Redis是一种高性能的键值对数据存储系统,常用于缓存、数据库和消息中间件等场景。这个名为"Redis-x64-5.0.14.1"的压缩包是Redis针对Windows操作系统的64位版本,版本号为5.0.14.1。在Windows上运行Redis可能与Linux...

    关于 phpredis2.2.5-5.5 ts-vc11-x64 的分享版本

    - 会话存储:替代传统的文件或数据库存储用户会话。 8. **Redis 高级特性** - 事务(Transactions):保证一组操作的原子性。 - 背压(Backpressure):防止数据过快流入 Redis 导致内存溢出。 - 持久化...

    redis64-3.0.501.rar

    10. Geo空间索引:Redis 3.2版本引入了Geo API,可以存储地理位置信息并执行范围查询、距离计算等操作。 了解并熟练掌握以上知识点,能帮助我们更好地利用Redis来优化应用程序性能,提供高效、可靠的缓存服务。在...

    redis-windows-7.0.10.zip

    Redis,全称Remote Dictionary Server,是一款开源的、高性能的键值存储系统,广泛应用于缓存、消息队列、数据持久化等多个场景。标题中的"redis-windows-7.0.10.zip"表明这是一个针对Windows操作系统的Redis服务器...

    redis-stack-server-6.2.6-v7.rhel7.x86-64.tar.gz

    Redis Stack 是一个全面的数据平台,它包含了 Redis 数据库本身以及一系列相关工具,旨在提供更完整、更高效的数据管理和分析解决方案。这里的 "redis-stack-server-6.2.6-v7.rhel7.x86-64.tar.gz" 文件是一个针对 ...

    redis-windows-7.2.4.zip

    Redis,全称Remote Dictionary Server,是一款开源的、高性能的键值对存储系统,它支持数据的持久化,可以作为数据库、缓存和消息中间件使用。Redis以其高速度和丰富的数据结构而闻名,广泛应用于互联网服务,如计数...

    session 共享 tomcat-redis-session-manager 所需要的jar (绝对可用)

    Tomcat Redis Session Manager是专门为Apache Tomcat设计的一个插件,它的主要任务是将Tomcat的Session对象存储在Redis这种高可用的键值存储系统中,以便在集群环境中跨多个Tomcat实例共享Session。这样可以解决负载...

    redis+redis-desktop-manager-0.8.3.3850+笔记

    Redis,全名Remote Dictionary Server,是一款开源的高性能键值对存储系统,它支持数据的持久化,可以将内存中的数据保存在磁盘上,同时提供了丰富的数据类型,如字符串、哈希表、列表、集合和有序集合。Redis以网络...

    Redis笔记-尚硅谷周阳V1.3-脑图

    根据《Redis笔记-尚硅谷周阳V1.3》整理,脑图、思维导图xmind

    redis-3.2.2.gem redis-3.2.2.gem redis-3.2.2.gem

    这个压缩包"redis-3.2.2.gem"包含的是Redis 3.2.2版本的源代码或者安装包,主要用于在Ruby环境中安装和使用Redis。Ruby社区使用gem作为包管理器,它允许开发者方便地管理和部署Ruby应用程序的依赖。 Redis 3.2.2是...

    tomcat-redis-session-manager jar包

    【标题】"tomcat-redis-session-manager jar包"是一个用于集成Redis进行Session管理的Java库,特别设计用于Apache Tomcat服务器。这个库使得在多台Tomcat服务器之间共享和协调用户的Session数据成为可能,从而提高了...

    redis-windows-7.0.8.zip

    Redis,全称Remote Dictionary Server,是一款开源的、高性能的键值存储系统,广泛应用于缓存、消息队列、数据持久化等多个场景。它的设计目标是速度极快,且支持多种数据结构,如字符串(strings)、哈希(hashes)...

    Another-Redis-Desktop-Manager.1.5.6

    标题中的“Another-Redis-Desktop-Manager.1.5.6”指的是Another Redis Desktop Manager的1.5.6版本。这是一款专为Redis数据库设计的桌面管理工具,它提供了直观的图形用户界面(GUI),方便用户进行数据的查看、...

Global site tag (gtag.js) - Google Analytics