(五)Redis基本类型——列表类型(List)_kangpp的博客-程序员信息网

技术标签: 列表类型  列表操作命令  Redis  redis  

1、介绍

列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段。

列表内部是使用双向链表实现的,获取越接近两端的元素速度越快。

一个列表类型键最多能容纳2的32次方-1个元素。

2、命令

(1)向列表两端增加元素 
LPUSH key value [value ...]
RPUSH key value [value ...] 
LPUSH命令用来向列表左边添加元素,返回值表示增加元素后列表的长度。且该命令支持同时增加多个元素。
RPUSH同LPUSH,用来向列表右边添加元素。
(2)从列表两端弹出元素
LPOP key
RPOP key
LPOP命令,从列表左边弹出一个元素,该命令执行两步操作:①将列表左边的元素从列表中移除。②返回被移除的元素。
RPOP命令同LPOP。结合(1)中提到的四个命令,可以使用列表类型来模拟栈和队列操作。
(3)获得列表中元素的个数

LLEN key
 该命令无需像部分关系型数据库那样需要遍历一遍数据表来统计条目数量。


(4)获得列表片段
LRANGE key start stop
LRANGE命令返回索引从start到stop之间的所有元素(包含两端的元素)。Redis列表起始索引为0。
LRANGE获得列表片段的同时,不会像LPOP一样将元素片段从列表中删除。
LRANGE支持负索引,表示从右边开始计算序数。如 "-1" 表示最右边第一个元素,"-2" 表示最右边第二个元素,以此类推。
LRANGE key 0 -1 可以获取列表中所有元素。另外若start的索引位置比stop的索引位置靠后,则会返回空列表,若stop大于实际的索引范围,则会返回到列表最右边的元素。
(5)删除列表中指定的值
LREM key count value
 LREM命令会删除列表中前count个值为value的元素,返回值是实际删除的元素个数。根据count 值的不同,LREM命令的执行方式会略有差异:
  • 当 count > 0 时,LREM 命令会从列表左边开始删除前 count 个值为 value 的元素;
  • 当 count < 0 时,LREM 命令会从列表右边开始删除前 |count| 个值为 value 的元素;
  • 当 count = 0 时,LREM命令会删除所有值为 value 的元素。
(6)获得/设置指定索引的元素值

   
    
LINDEX key index
 LSET key index value
LINDEX 命令用来返回指定索引元素,索引从 0 开始。如果 index 是负数,则表示从右边开始计算的索引,最右边元素的索引是 -1。
LSET 可以将索引为 index 的元素赋值为value。
(7)只保留列表指定片段
LTRIM key start end
 LTRIM 命令可以删除指定索引范围之外的所有元素
LTRIM 命令和 LPUSH 命令一起使用来限制列表中元素数量。比如记录日志时,我们希望只保留最近的100条日志,则每次加入新元素时调用一次 LTRIM 即可。
(8)向列表中插入元素
LINSERT key BEFORE|AFTER pivot value
 LINSERT 命令首先会在列表中从左到右查找值为 pivot 的元素,然后根据第二个参数 BEFORE 还是 AFTER 来决定将value值插入到该元素的前面还是后面。

(9)将元素从一个列表转到另一个列表
RPOPLPUSH source destination
 从名字可以看出它需要先执行RPOP,再执行LPUSH命令。RPOPLPUSH命令先从 source 列表类型键的右边弹出一个元素,然后再将其加入到 destination 列表类型键的左边,并返回这个元素的值,整个过程是原子的。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/kangpengpeng1/article/details/79125144

智能推荐

关于THC/THC.h: No such file or directory解决办法_无名°的博客-程序员信息网

最近在跑FCOS代码时,在最后一步总是出现fatal error: THC/THC.h: No such file or directory百度,谷歌全找了一遍,最后发现时pytorch在最新的版(1.11)本中将THC/THC.h文件删除了。降低pytorch版本即可。我将pytorch版本将为1.5运行成功。原文链接...

openwrt http服务: 数据提交与服务器流程_重来就选李白的博客-程序员信息网

1.htm页面jquery中的ajax方法参数总是记不住,这里有个很好的参考function stxhr_get(datas) { var legend = document.getElementById('diag-rc-legend'); var output = document.getElementById('diag-rc-output'); if (legend &amp;amp;&amp;am...

asp.net利用表单提交,上传文件,图片_风一样的虞的博客-程序员信息网_.net 表单提交文件

今天在修改公司前辈代码,框架是基于C#,ASP.NET技术,期间使用到图片拍照上传功能时,在前台预览图片后,表单提交到后台处理,但是后台获取不到图片,百思不得其解。下面我们一起来看一看: 1.前端代码&lt;!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapfor...

uniapp view或者text文本过长不能换行解决方案_一颗甜橙树的博客-程序员信息网_uniapp view换行

今天在写项目的时候,遇到了一个令人很难受的点,我的text,或者view文本超出了之后就显示不出来了,用了display:flex;和flex:wrap;都没有用。后面百度了下,才发现uniapp里面flex:wrap;不生效,以下是解决方案:&lt;view class="product" style="display:flex;padding-right: 30rpx;"&gt; &lt;text &gt;商品:&lt;/text&gt; &lt;text class="gra.

《Java程序设计》第二次作业:MySQL数据库及Java操作MySQL数据库_黄国滔的博客-程序员信息网

《Java程序设计》第二次作业:MySQL数据库及Java操作MySQL数据库 【目的】1.掌握MySQL数据库的使用方法。2.掌握Java操作MySQL数据库的方法。 【目标】目标1:MySQL数据库的基本操作,包括MySQL的安装、创建数据库、数据表、增删改查操作(80分)。目标2:Java操作MySQL数据库,包括基本步骤和具体的编码实现(90分)。

Log-Pilot+Elasticsearch+Kibana日志解决方案_思考v的博客-程序员信息网

该方案是社区方案EFK的升级版,它支持两种搜集形式,对应容器标准输出日志和容器内的日志文件;个人使用了一把,在原有EFK经验的基础上非常简单、方便,值得推荐;更多的关于log-pilot的介绍详见链接:github 项目地址:https://github.com/AliyunContainerService/log-pilot 阿里云介绍文档:https://help.aliyun.co...

随便推点

protobuf-c简介与使用_六斤的小猪猪呀的博客-程序员信息网_protobuf-c

protobuf-c简介一、数据类型照proto类型C/C++类型proto类型C/C++类型doubledoublefloatfloatint32int32int64int64uint32uint32uint64uint64sint32int32sint64int64fixed32uint32fixed64uint64sfixed32int32sfixed64int64boolboolstringst

宏的使用_还不够好呢的博客-程序员信息网

C/C++宏的使用 基础部分 1. __VA_ARGS__:用来替换任意参数部分,相当于c语言中的va_list;例:#define OUT(...)   printf(__VA_ARGS__)2.宏从内向外展开(例外情况见4)原因是,当一个红的参数也是宏的时候,它会尝试先展开它的参数;例:

SGuard64.exe(SGuardwnd) ACE-Guard Client EXE:造成磁盘经常读写,游戏卡顿,及解决方案_清风亦思雨的博客-程序员信息网_ace-guard

持续扫盘,特别是腾讯代理的游戏一旦开局,有磁盘灯的会发现磁盘灯常亮,没错,扫盘开始了,大约算了一下,这个程序平均读操作可以达到每秒三到四兆(按照3.5来算),按照每十秒有四秒钟读操作,平均半个小时能读磁盘2520M,也就是2.5个G!这个程序你还不能够关闭,关闭进程无用,因为你关不掉,是的,点击结束进程还在,咱也不知道怎么实现的这个功能,像病毒一样顽固。网上不少论坛(如吾爱破解、百度贴吧等)都有一些大牛写的程序,也是不断升级,可以压制它的读操作的速度,几乎不再进行读操作,高峰读操作,它也能降到1兆不到。..

python turtle库 简单图形-中国结_-朝汐-的博客-程序员信息网

import turtleturtle.screensize(600,800)turtle.pensize(10)turtle.pencolor(&quot;red&quot;)turtle.seth(-45)turtle.fd(102)turtle.circle(-6,180)turtle.fd(102)turtle.circle(6,180)turtle.fd(102)turtle.circl...

matlab libsvm如何使用,Matlab的LIBSVM使用介绍(转)_冯刚廷的博客-程序员信息网

一开始见到Chenjielin教授的这个软件没怎么细究,不知怎么用,就放着研究别的方法了,回头找了点网上的资料,研究了一下终于明白怎么用了。网上资料很详细,只是自己有些地方没有注意,所以一直没有结果,现总结如下:(希望会有帮助)1.首先从主页上下载libsvm、Python2.5.2和gnuplot 三个软件。2.准备好数据,首先要把数据转换成Libsvm软件包要求的数据格式为:label ind...

Saltstack_使用指南05_数据系统-Pillar_weixin_34050519的博客-程序员信息网

1. 主机规划服务器名称操作系统版本内网IP外网IP(模拟)Hostname部署模块salt100CentOS7.5172.16.1.10010.0.0.100salt100salt-master、salt-minionsalt01CentOS7.5172.16.1.1110.0.0.11salt01salt-minionsalt02C...

推荐文章

热门文章

相关标签