iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Redis列表类型的常用命令小结
  • 597
分享到

Redis列表类型的常用命令小结

小结类型常用命令 2022-06-04 17:06:31 597人浏览 独家记忆
摘要

列表类型介绍 列表类型也是一个我们很长要用到的一个类型。比如我们发博客,要用到博客列表。如果没有列表我们就只能遍历键来获取所有文章或一部分文章了,这个语法是keys,但是这个命令需要遍历数据库中的所有键,处

列表类型介绍

列表类型也是一个我们很长要用到的一个类型。比如我们发博客,要用到博客列表。如果没有列表我们就只能遍历键来获取所有文章或一部分文章了,这个语法是keys,但是这个命令需要遍历数据库中的所有键,处于性能方面的考虑,在生产环境是不推荐使用的。

列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加、删除、获取元素,或者某个片段。在Redis中,实际上是使用双向链表的方式实现的,所以在列表两端添加删除元素的时间复杂度是O(1),获取的元素越接近两端,速度越快。但是通过索引访问元素就会很慢,尤其是列表很长的时候。但是如果只是获得队列开头或结尾的前多少个元素,这个就和队列长度无关了。所以这里队列非常适合我们的评论功能,以及一些新鲜事等功能的开发,记录日志也很好用。

1、增加元素命令

向列表两端添加元素:


redis> lpush key value [value ...]
redis> rpush key value [value ...]

这里也很容易明白,lpush的l是left,向列表左边添加元素,r自然就是right右边的意思了。 (lpush,rpush 类似于操作队列,往左边push,往右边push)


C:Program FilesRedis>redis-cli.exe
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> lpush mylist 0
(integer) 1
127.0.0.1:6379> rpush mylist 1
(integer) 2
127.0.0.1:6379> lpush mylist -1 -2
(integer) 4
127.0.0.1:6379> lrange mylist 0 -1
1) "-2"
2) "-1"
3) "0"
4) "1"

返回值是列表的长度。这里push的值可以是多个,但是有一点要说明一下。像是上面这样左边push了两个值-1、-2,实际上现在列表的值是这样排序的,-2、-1、0、1,所以就算是同时push多个,实际上也是一个一个插入列表的,只不过这些操作都会是原子的。

2、弹出元素命令


redis> lpop key
redis> rpop key

这里就很好理解了,分别是从左弹出,从右弹出,返回值是弹出的值。(弹出的意思就是把值移除并返回值)


127.0.0.1:6379> lrange mylist 0 -1
1) "-2"
2) "-1"
3) "0"
4) "1"
127.0.0.1:6379> lpop mylist
"-2"
127.0.0.1:6379> rpop mylist
"1"
127.0.0.1:6379> lrange mylist 0 -1
1) "-1"
2) "0"

综合上面四条命令,可以实现栈和队列了。

栈:lpush和lpop或者使用rpush和rpop。

队列:lpush和rpop或者使用rpush和lpop。

3、获取列表中元素的个数


redis> llen key

当键不存在是返回0,这个如果一路学下来都可以猜到了。这里redis执行这条命令的时间复杂度是O(1),不像关系型数据库中的O(N)。


127.0.0.1:6379> llen mylist
(integer) 2

4、获取列表片段


redis> lrange key start stop

lrange命令比较常用,返回从start到stop的所有元素的列表,start和stop都是从0开始。


127.0.0.1:6379> lrange mylist 0 -1
1) "-1"
2) "0"

lrange还支持负值索引,这里是负值大家可以把负号加值直接理解成从从右数第多少个。

例如现在numbers的值是-2、-1、0、1,我们要是执行lrange numbers -2 -1,就会得到最后两个值。还有lrange numbers 0 -1是我们常用的用来获取全部列表的命令。

这里有两点要注意一下:

(1)如果start索引比stop索引位置靠后(这里说的是位置,不是索引值的大小),则会返回空列表(empty list or set)。

(2)如果stop大于实际的索引范围,则会返回列表最后变的元素。

5、删除列表中指定值


redis> lrem key count value

lrem命令会删除列表中前count个值为value的元素,返回实际删除的元素个数。实际count大小不同,执行方式不同。

(1)count > 0:从列表左边开始删除前count个值为value的元素

(2)count < 0:从右边开始删除

(3)count = 0:删除所有

返回值是删除值的个数。

6、获得/设置指定索引的元素值


redis> lindex key index
redis> lset key index value

这里应该很好理解了,特殊说明一下index如果是负值的话就是从右边开始计算索引,和lrange的负值是一个意思。


127.0.0.1:6379> lrange mylist 0 -1
1) "0"
2) "-1"
3) "-2"
4) "-3"
127.0.0.1:6379> lindex mylist 0
"0"
127.0.0.1:6379> lindex mylist 3
"-3"
127.0.0.1:6379> lindex mylist -1
"-3"

7、只保留列表中指定的片段


redis> ltrim key start end

这里也不做特殊说明了。


127.0.0.1:6379> lrange mylist 0 -1
1) "0"
2) "-1"
3) "-2"
4) "-3"
127.0.0.1:6379> lindex mylist 0
"0"
127.0.0.1:6379> lindex mylist 3
"-3"
127.0.0.1:6379> lindex mylist -1
"-3"
127.0.0.1:6379> ltrim mylist 0 2
OK
127.0.0.1:6379> lrange mylist 0 -1
1) "0"
2) "-1"
3) "-2"

8、向列表中插入元素

现在我们列表中的值是0,-1,-2


redis> linsert key before|after pivot value

127.0.0.1:6379> linsert mylist before 0 1
(integer) 4 //在0值前面插入1
127.0.0.1:6379> lrange mylist 0 -1
1) "1"
2) "0"
3) "-1"
4) "-2"
127.0.0.1:6379> linsert mylist after 1 1
(integer) 5 //在值为1的后面插入1
127.0.0.1:6379> lrange mylist 0 -1
1) "1"
2) "1"
3) "0"
4) "-1"
5) "-2"
127.0.0.1:6379> linsert mylist after -1 -1.5
(integer) 6 //在值为-1的后面插入-1.5
127.0.0.1:6379> lrange mylist 0 -1
1) "1"
2) "1"
3) "0"
4) "-1"
5) "-1.5"
6) "-2"

现在列表中的值为1,1,0,-1,-1.5,-2 。linsert命令会先从列表中查找值为pivot的元素,然后根据是before还是after在前或是后添加元素。

9、将元素从一个列表转储到另一个列表


redis> rpoplpush source destination

这个命令非常有意思,先执行rpop再执行lpush。这个命令会先从source右边弹出一个元素插入到destination列表的左边,并返回这个元素的值。整个过程同样是原子的。

总结

到这里我们列表类型的命令就都介绍完了,是不是很简单呢~希望这篇文章对大家的学习或者工作能带来一定的帮助,如果有问题大家可以留言交流。

您可能感兴趣的文档:

--结束END--

本文标题: Redis列表类型的常用命令小结

本文链接: https://www.lsjlt.com/news/11927.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • redis列表list常用命令大全
    在自己去操作列表的时候发现很多命令自己都不知道,想法很多,但是脑子内存货很少,就找时间仔细的去总结了一些 超级超级详细: 1.string(字符串操作) 1.set:设置键  $reids->set('mykey',111);2.get:获...
    99+
    2023-09-14
    redis 缓存 php
  • beeline的常用命令小结
    本篇内容主要讲解“beeline的常用命令小结”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“beeline的常用命令小结”吧! &l...
    99+
    2024-04-02
  • Linux常用命令小结
    这篇文章主要讲解了“Linux常用命令小结”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux常用命令小结”吧!Linux常用命令使用CRT / Xshell 软件连接VM,编写虚拟机1...
    99+
    2023-06-03
  • Redis基本数据类型List常用操作命令
    目录Redis数据类型List操作一、push 插入元素1. lpush,在头部插入2. rpush,在尾部插入二、range 通过区间获取元素三、pop 移除元素1. lpop 左...
    99+
    2024-04-02
  • Redis基本数据类型String常用操作命令
    目录Redis数据类型String操作命令一、append 追加字符串二、strlen 获取key 字符串长度三、自增、自减四、字符串range五、替换字符串六、设置值及其过期时间s...
    99+
    2024-04-02
  • Redis基本数据类型Set常用操作命令
    目录Redis基本数据类型Set常用操作一、sadd 添加一个、多个元素二、smembers 查看集合三、scard 元素数量四、srem 移除一个、多个元素五、srandmembe...
    99+
    2024-04-02
  • redis的常用命令
    redis> SET db_number 0         # 默...
    99+
    2024-04-02
  • Redis基础类型及常用操作、命令有哪些
    Redis基础类型及常用操作、命令有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。概念:Redis是用C语言开发的一个开源的高性能键值对数...
    99+
    2024-04-02
  • dos常用命令列表和用法
    本篇内容介绍了“dos常用命令列表和用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1 echo 和 @回显命令@  ...
    99+
    2023-06-09
  • Oracle常用的查看表结构命令
    本篇内容主要讲解“Oracle常用的查看表结构命令”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle常用的查看表结构命令”吧!Oracle常用查看表结构...
    99+
    2024-04-02
  • MySQL数据库常用命令小结
    目录1.对数据库常用命令2.数据库中对表的命令插入数据数据查询常用函数模糊查询多表连接查询1.对数据库常用命令 1.连接数据库mysql -u用户名 -p密码2.显示已有数据库sho...
    99+
    2023-01-12
    MySQL数据库命令 MySQL命令
  • Redis基本数据类型哈希Hash常用操作命令
    目录Redis数据类型Hash常用操作一、hset二、hget三、hmset四、hmget五、hgetall六、hdel七、hlen八、hexists九、hkeys十、hvals十一...
    99+
    2024-04-02
  • Redis中 HyperLogLog数据类型使用小结
    目录1. HyperlogLog 的原理2.使用步骤:3.实现请求ip去重的浏览量使用示例4.Jedis客户端使用5.Redission使用依赖6.HyperLogLog 提供了哪些特性和方法7.使用场景总结:1. Hy...
    99+
    2023-03-13
    Redis HyperLogLog数据类型使用 Redis HyperLogLog数据类型
  • Redis中 HyperLogLog数据类型使用小结
    目录1. HyperLogLog 的原理2.使用步骤:3.实现请求ip去重的浏览量使用示例4.Jedis客户端使用5.Redission使用依赖6.HyperLogLog 提供了哪些...
    99+
    2023-03-13
    Redis HyperLogLog数据类型使用 Redis HyperLogLog数据类型
  • MySql常用表操作命令总结
    本篇内容介绍了“MySql常用表操作命令总结”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 1:使用SH...
    99+
    2024-04-02
  • python中列表类型常用操作
    列表是个在写测试用例时经常被用到的类型,我们来看下列表常用的一些操作吧。 1、 分片 作用:提取列表中的一部分元素出来(分片在测试的时候也经常会用到) 这里的a[1:4]指取从a这个列表的下标为1的索引开始(即第二个元素),到下标为3...
    99+
    2023-01-31
    常用 类型 操作
  • sql中用什么命令可以修改表的结构类型
    使用 alter table 命令修改 sql 表的结构类型:指定表名、要修改的列名和新数据类型。可选指定列是否允许为空值。注意一次只能修改单个列,新数据类型须兼容现有值,且有外键约束时...
    99+
    2024-05-12
  • Redis基本数据类型String常用操作命令是什么
    这篇文章主要讲解了“Redis基本数据类型String常用操作命令是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Redis基本数据类型String常用操作命令是什么”吧!Redis数据...
    99+
    2023-06-30
  • Redis基本数据类型List常用操作命令是什么
    这篇文章主要讲解了“Redis基本数据类型List常用操作命令是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Redis基本数据类型List常用操作命令是什么”吧!Redis数据类型Li...
    99+
    2023-06-30
  • Python常见类型转换的小结
    目录一:常见类型的概念二:类型转换1,二进制,八进制,十进制,十六进制转换2,数值字符串转换3,字符串和字节byte转换4,报文数据包和其他类型的互转4.1 bin十六进制...
    99+
    2023-02-21
    Python常见类型转换 Python 类型转换
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作