Redis基础用法(二)

redis列表(List)
简介
单键多值
redis列表是简单的字符串列表,按照插入顺序排序。
你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
它的底层实际上是使用双向链表实现的,对两端的操作性能很高,通过索引下标操作中间节点性能会较差。

lpush/rpush:从左边或者右边插入一个或多个值
lrange:从列表左边获取指定范围内的值

127.0.0.1:6379> flushdb 
OK
127.0.0.1:6379> rpush course java c c++ php js nodejs #course集合的右边插入6个元素 (integer) 6
127.0.0.1:6379> lrange course 0 -1 #取出course集合中所有元素 
1) "java" 
2) "c" 
3) "c++" 
4) "php" 
5) "js" 
6) "nodejs" 
127.0.0.1:6379> lrange course 1 3 #获取course集合索引[1,3]范围内的元素 
1) "c" 
2) "c++" 
3) "php"

lpop/rpop:从左边或者右边弹出多个元素

127.0.0.1:6379> flushdb 
OK
127.0.0.1:6379> rpush course java c++ php js node js #集合course右边加入6个元素 
(integer) 6 
127.0.0.1:6379> lpop course #从左边弹出1个元素 "java" 
127.0.0.1:6379> rpop course 2 #从右边弹出2个元素 
1) "js" 
2) "node"

rpoplpush:从一个列表右边弹出一个元素放到另外一个列表中

127.0.0.1:6379> flushdb 
OK
127.0.0.1:6379> rpush k1 1 2 3 #列表k1的右边添加3个元素[1,2,3] 
(integer) 3 
127.0.0.1:6379> lrange k1 0 -1 #从左到右输出k1列表中的元素 
1) "1" 
2) "2" 
3) "3" 
127.0.0.1:6379> rpush k2 4 5 6 #列表k2的右边添加3个元素[4,5,6]
(integer) 3 
127.0.0.1:6379> lrange k2 0 -1 #从左到右输出k2列表中的元素 
1) "4" 
2) "5" 
3) "6" 
127.0.0.1:6379> rpoplpush k1 k2 #从k1的右边弹出一个元素放到k2的左边 
"3" 
127.0.0.1:6379> lrange k1 0 -1 #k1中剩下2个元素了 
1) "1" 
2) "2" 
127.0.0.1:6379> lrange k2 0 -1 #k2中变成4个元素了 
1) "3" 
2) "4"
3) "5"
4) "6"

lindex:获取指定索引位置的元素(从左到右)
返回列表 key 中,下标为 index 的元素。
下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1
表示列表的第二个元素,以此类推。
你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此
类推。
如果 key 不是列表类型,返回一个错误。
返回值:
列表中下标为 index 的元素。
如果 index 参数的值不在列表的区间范围内(out of range),返回 nil

127.0.0.1:6379> flushdb 
OK
127.0.0.1:6379> rpush course java c c++ php #列表course中放入4个元素
(integer) 4 
127.0.0.1:6379> lindex course 2 #返回索引位置2的元素 "c++" 
127.0.0.1:6379> lindex course 200 #返回索引位置200的元素,没有  
(nil) 
127.0.0.1:6379> lindex course -1 #返回最后一个元素 "php"

llen:获得列表长度
返回列表 key 的长度。
如果 key 不存在,则 key 被解释为一个空列表,返回 0 .
如果 key 不是列表类型,返回一个错误。

127.0.0.1:6379> flushdb 
OK
127.0.0.1:6379> rpush name ready tom jack 
(integer) 3 
127.0.0.1:6379> llen name 
(integer) 3

linsert:在某个值的前或者后面插入一个值
将值 newvalue 插入到列表 key 当中,位于值 value 之前或之后。
当 value 不存在于列表 key 时,不执行任何操作。
当 key 不存在时, key 被视为空列表,不执行任何操作。
如果 key 不是列表类型,返回一个错误。
返回值:
如果命令执行成功,返回插入操作完成之后,列表的长度。
如果没有找到 value ,返回 -1 。
如果 key 不存在或为空列表,返回 0 。

127.0.0.1:6379> flushdb 
OK
127.0.0.1:6379> rpush name ready tom jack #列表name中添加3个元素 
(integer) 3 
127.0.0.1:6379> lrange name 0 -1 #name列表所有元素 
1) "ready" 
2) "tom" 
3) "jack" 
127.0.0.1:6379> linsert name before tom lily #tom前面添加lily 
(integer) 4 
127.0.0.1:6379> lrange name 0 -1 #name列表所有元素 
1) "ready" 
2) "lily" 
3) "tom" 
4) "jack" 
127.0.0.1:6379> linsert name before xxx lucy # 在元素xxx前面插入lucy,由于xxx元素不存 在,插入失败,返回-1 
(integer) -1 
127.0.0.1:6379> lrange name 0 -1 
1) "ready" 
2) "lily" 
3) "tom" 
4) "jack"

lrem:删除指定数量的某个元素
根据参数 count 的值,移除列表中与参数 value 相等的元素。
count 的值可以是以下几种:
count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。
count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。
count = 0 : 移除表中所有与 value 相等的值。
返回值:
被移除元素的数量。
因为不存在的 key 被视作空表(empty list),所以当 key 不存在时,总是返回 0 。

127.0.0.1:6379> flushdb #清空db,方便测试 
OK
127.0.0.1:6379> rpush k1 v1 v2 v3 v2 v2 v1 #k1列表中插入6个元素 
(integer) 6 
127.0.0.1:6379> lrange k1 0 -1 #输出k1集合中所有元素 
1) "v1" 
2) "v2" 
3) "v3" 
4) "v2" 
5) "v2" 
6) "v1" 
127.0.0.1:6379> lrem k1 2 v2 #k1集合中从左边删除2个v2 
(integer) 2 
127.0.0.1:6379> lrange k1 0 -1 #输出列表,列表中还有1个v2,前面2个v2干掉了 
1) "v1" 
2) "v3" 
3) "v2" 
4) "v1"

lset:替换指定位置的值
将列表 key 下标为 index 的元素的值设置为 value 。 当 index 参数超出范围,或对一个空列表( key 不存在)进行lset时,返回一个错误。
返回值:
操作成功返回 ok ,否则返回错误信息。

127.0.0.1:6379> flushdb #清空db,方便测试 
OK
127.0.0.1:6379> rpush name tom jack ready #name集合中放入3个元素 
(integer) 3 
127.0.0.1:6379> lrange name 0 -1 #输出name集合元素 
1) "tom" 
2) "jack" 
3) "ready" 
127.0.0.1:6379> lset name 1 lily #将name集合中第2个元素替换为liy 
OK
127.0.0.1:6379> lrange name 0 -1 #输出name集合元素 
1) "tom" 
2) "lily" 
3) "ready" 
127.0.0.1:6379> lset name 10 lily #索引超出范围,报错
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于学习Redis基础知识,可以按照以下思路进行学习: 1. 了解Redis的概念和特点:首先需要了解Redis是什么,它的主要特点是什么,它为什么被广泛应用于缓存、消息队列、会话管理等场景。 2. 安装和配置Redis:根据你的操作系统,安装Redis并进行相关配置。可以参考Redis官方文档或其他教程来完成这一步。 3. 学习Redis的数据结构:Redis支持多种数据结构,如字符串、哈希、列表、集合和有序集合等。了解每种数据结构的特点、用途和操作命令,并通过实际操作来加深理解。 4. 掌握Redis的常用命令:学习Redis的常用命令,如get、set、hget、hset、lpush、lrange、sadd、smembers等,了解每个命令的具体用法和参数含义。 5. 理解Redis的持久化机制:了解Redis的RDB和AOF两种持久化方式,以及它们的优缺点。学习如何进行备份和恢复数据。 6. 学习Redis的事务和Lua脚本:了解Redis事务的基本概念和使用方法,以及如何使用Lua脚本来进行复杂的操作。 7. 深入了解Redis的性能优化和高可用方案:学习如何优化Redis的性能,包括配置调优、使用合适的数据结构、合理地使用缓存等。同时了解Redis的高可用方案,如主从复制、哨兵模式和集群模式。 8. 学习Redis与其他技术的结合:了解Redis如何与其他技术进行结合,如与Python、Java等编程语言的配合使用,以及与Spring、Django等框架的整合。 以上是学习Redis基础知识的一个思路,你可以根据自己的实际情况和需求进行学习和拓展。推荐参考一些经典的Redis教程和实战案例,通过实际操作和项目实践来提升自己的技能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值