一、介绍

  Redis列表(List)是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(left)或者尾部(right),一个列表最多可以包含232-1个元素(4294967295,每个列表超过40亿个元素)。

  基本命令:

  blpop key [key2 ...] timeout(移除并获取列表的第一个元素,如果列表没有元素会阻塞列表知道等待超时或者发现可弹出元素为止)

  brpop key [key2 ...] timeout(移除并获取列表最后一个元素,同上)

  brpoplpush source destination timeout (从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它;如果列表没有元素会阻塞列表知道等待超时或者发现可弹出元素为止)

  lindex key index (通过索引获取列表中的元素)

  linsert key before|after pivot value (在列表的元素前或后插入元素)

  llen key (获取列表长度)

  lpop key (移除并获取列表的第一个元素)

  lpush key value [value2 ...] (将一个或多个值插入到列表头部)

  lpushx key value [value2 ... ] (为已存在的列表将一个或多个值插入到列表头部)

  lrange key start stop (获取列表指定范围内的元素)

  lrem key count value   (移除列表元素)

  lset key index value (通过索引设置列表元素的值)

  ltrim key start stop  (对一个列表进行修剪,就是说让列表只保留指定区间内的元素,不在指定区间之内的元素都被删除)

  rpop key  (移除并获取列表最后一个元素)

  rpoplpush source destination  (移除列表最后一个元素,并将该元素添加到另一个列表并返回)

  rpush key value [value2 ...]  (向列表最后中添加一个或多个值)

  rpushx key value  (为已存在的列表添加值)

二、操作

  1、lpush key value [value2 ...] (向列表头部中添加一个或多个值)

  

  显示结果:

  

  每次添加的value都是在头部添加。

  2、rpush key value [value2 ...] (向列表尾部中添加一个或多个值)

  

  显示结果:

  

  每次添加的value都是在尾部添加。

  3、lrange key start stop (获取列表指定范围内的元素)

  start: 0 = 从位置0开始

  stop: -1 = 集合最后一个位置

  

  4、lpushx key value [value2 ... ] (为已存在的列表将一个或多个值插入到列表头部)

  如果集合不存在,返回0

  

  

  5、rpushx key value [value2 ... ] (为已存在的列表将一个或多个值插入到列表尾部)

  如果集合不存在,返回0

  

  6、blpop key [key2 ...] timeout(移除并获取列表的第一个元素,如果列表没有元素会阻塞列表知道等待超时或者发现可弹出元素为止)

  

  如果List里面有元素,则会返回两个元素,第一个弹出的元素是所属的key,第二个元素是被弹出元素的值;

  如果List里面没有元素,为空的话,会返回一个nil,命令后参数跟着的100是,如果List是空,100秒后返回nil。

  7、blpop key [key2 ...] timeout  (同brpop)

  

  8、lpop key  (移除并获取列表的第一个元素)

  

  9、rpop key  (移除并获取列表的最后一个元素)

  

  10、brpoplpush source destination timeout (从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它;如果列表没有元素会阻塞列表知道等待超时或者发现可弹出元素为止)

  被弹集合有元素情况下:

  

  被谈集合无元素情况下:

  

11、rpoplpush source destination  (移除列表最后一个元素,并将该元素添加到另一个列表并返回)

  被弹集合有元素情况下:

  

  被弹集合无元素情况下:

  

12、llen key (获取列表长度)

  

13、lindex key index (通过索引获取列表中的元素)

  

14、linsert key before|after pivot value (在列表的元素前或后插入元素)

  (before)在指定元素前插入元素:

  

  (after)在指定元素后插入元素:

  

15、lrem key count value   (移除列表元素)

  可以删除指定数量的元素

  

16、lset key index value (通过索引设置列表元素的值)

  

17、ltrim key start stop  (对一个列表进行修剪,就是说让列表只保留指定区间内的元素,不在指定区间之内的元素都被删除)

  

  

  

  

Redis学习笔记(四)——数据结构之List的更多相关文章

  1. StackExchange.Redis学习笔记(四) 事务控制和Batch批量操作

    Redis事物 Redis命令实现事务 Redis的事物包含在multi和exec(执行)或者discard(回滚)命令中 和sql事务不同的是,Redis调用Exec只是将所有的命令变成一个单元一起 ...

  2. Redis学习笔记四:独立功能之发布与订阅

    客户端可以通过执行 subscribe 命令订阅一个或多个频道,每当有其他客户端向被订阅的频道发送消息时,频道所有的订阅者都会收到这条消息. 客户端还可以通过执行 psubscribe 命令订阅一个或 ...

  3. Redis 学习笔记四 Mysql 与Redis的同步实践

    一.测试环境在Ubuntu kylin 14.04 64bit 已经安装Mysql.Redis.php.lib_mysqludf_json.so.Gearman. 点击这里查看测试数据库及表参考 本文 ...

  4. Redis学习笔记一:数据结构与对象

    1. String(SDS) Redis使用自定义的一种字符串结构SDS来作为字符串的表示. 127.0.0.1:6379> set name liushijie OK 在如上操作中,name( ...

  5. Redis学习笔记(1)——Redis简介

    一.Redis是什么? Remote Dictionary Server(Redis) 是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value ...

  6. Redis学习笔记(二) Redis 数据类型

    Redis 支持五种数据类型:string(字符串).list(列表).hash(哈希).set(集合)和 zset(有序集合),接下来我们讲解分别讲解一下这五种类型的的使用. String(字符串) ...

  7. redis 学习笔记(6)-cluster集群搭建

    上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...

  8. Redis学习笔记~目录

    回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...

  9. Redis学习笔记4-Redis配置详解

    在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server   xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redi ...

  10. Redis学习笔记7--Redis管道(pipeline)

    redis是一个cs模式的tcp server,使用和http类似的请求响应协议.一个client可以通过一个socket连接发起多个请求命令.每个请求命令发出后client通常会阻塞并等待redis ...

随机推荐

  1. 刷题[HCTF 2018]WarmUp

    解题思路 进入页面之后,一个大大的滑稽. 查看源码 查看源码发现有source.php .打开 发现还有一个hint.php.打开发现 由此可知是代码审计了 解题 代码审计 先看此段代码,大致意思是. ...

  2. python3-day4

    一.列表生成式,迭代器和生成器 1)列表生成式 把列表  [0,1,2,3,4,5,6,7,8,9]里的每个值添加1 1 >>>a = [0,1,2,3,4,5,6,7,8,9] 2 ...

  3. VS2017 Xamarin开发Android时首次部署完成后直接闪退

    项目属性切换到Android选项,在打包属性上有一个[使用共享运行时]的选项要取消勾选,默认打钩时apk文件比较小,但程序无法运行起来. 取消后安装包一小变成几十M,这个目前好像没什么好的解决办法,毕 ...

  4. Python-生成器函数(协程实现底层原理)-yield

    yield 1. 函数执行的时候,找到yield关键字,则会标记这个函数,返回生成器对象 2. Python解释器会记录最近一次函数中yield位置 3. 生成器对象也是分配在栈堆上 4. 通过yie ...

  5. Go-missing return at end of function

    where? Go程序中函数在执行的时候 why? 函数有返回参数,但是函数没有return关键字,报错 way? 添加return返回函数需要返回的参数

  6. Leetcode-哈希表

    136. 只出现一次的数字 https://leetcode-cn.com/problems/single-number/ 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找 ...

  7. Python练习题 035:Project Euler 007:第10001个素数

    本题来自 Project Euler 第7题:https://projecteuler.net/problem=7 # Project Euler: Problem 7: 10001st prime ...

  8. 图文并茂C++精华总结 复习和进阶

    字面常量不可以有引用,因为这也不需要使用符号来引用了,但是字面常量却可以初始化const引用,这将生成一个只读变量: 对变量的const修饰的引用是只读属性的: 也就是说,const修饰的引用,不管是 ...

  9. python 给IDLE添加行号

    [LineNumbers] enable=1 enable_editor=1 enable_shell=1 visible=1 [LineNumbers_cfgBindings] linenumber ...

  10. c++缓冲区std::wstringbuf

    参考:http://www.cplusplus.com/reference/sstream/wstringbuf/ class <sstream> std::wstringbuf type ...