list 值就是一组根据插入顺序排列的字符串, 从左向右排列, 左边为头(head), 右侧为尾(tail). 左边为顶部, 右边为底部.

下图为 list 值的示意图:

从左侧开始向键为 num 的 list 插入数据:

127.0.0.1:6379> lpush num 1 2 3 4
(integer) 4

查看 num 里的数据, 因为数据是从左侧开始插入, 并且插入的先后顺序是从1到4, 所以1在最底层, 4在最顶层:

127.0.0.1:6379> lrange num 0 10
1) "4"
2) "3"
3) "2"
4) "1"

再从左侧插入一个数据:

127.0.0.1:6379> lpush num 5
(integer) 5
127.0.0.1:6379> lrange num 0 10
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"

从左侧弹出一个数据, 因为5在最顶层, 所以最先弹出:

127.0.0.1:6379> lpop num
"5"
127.0.0.1:6379> lrange num 0 10
1) "4"
2) "3"
3) "2"
4) "1"

从右侧插入数据:

127.0.0.1:6379> rpush num 5
(integer) 5
127.0.0.1:6379> lrange num 0 10
1) "4"
2) "3"
3) "2"
4) "1"
5) "5"
127.0.0.1:6379> rpush num 6
(integer) 6
127.0.0.1:6379> lrange num 0 10
1) "4"
2) "3"
3) "2"
4) "1"
5) "5"
6) "6"

从右侧弹出数据:

127.0.0.1:6379> rpop num
"6"
127.0.0.1:6379> lrange num 0 10
1) "4"
2) "3"
3) "2"
4) "1"
5) "5"

查看一个 list 的长度:

127.0.0.1:6379> lrange num 0 10
1) "4"
2) "3"
3) "2"
4) "1"
5) "5"
127.0.0.1:6379> llen num
(integer) 5

根据索引查看 list 中某个位置的值:

127.0.0.1:6379> lindex num 3
"1"
127.0.0.1:6379> lindex num 0
"4"

根据索引修改 list 中某个位置的值:

127.0.0.1:6379> lset num 0 8
OK
127.0.0.1:6379> lrange num 0 10
1) "8"
2) "3"
3) "2"
4) "1"
5) "5"

在未知 list 长度的情况下, 可以使用 0 -1 的范围来查看 list 中的所有值:

127.0.0.1:6379> lrange num 0 -1
1) "8"
2) "3"
3) "2"
4) "1"
5) "5"

在插入数据之前, 先检查指定的键是否存在, 如果存在则插入, 如果不存在, 则返回0. 用这个命令插入, 一次只能插入一个值, 多个会报错:

127.0.0.1:6379> lpushx num 9
(integer) 6
127.0.0.1:6379> lrange num 0 -1
1) "9"
2) "8"
3) "3"
4) "2"
5) "1"
6) "5"
127.0.0.1:6379> lpushx sub 9
(integer) 0

在 list 中间的某个位置插入数据, 可以用 linsert 命令, 借助关键字 before 和 after 确定位置:

127.0.0.1:6379> lrange num 0 -1
1) "5"
2) "1"
3) "2"
4) "3"
5) "8"
6) "9"
127.0.0.1:6379> linsert num before 8 55
(integer) 7
127.0.0.1:6379> lrange num 0 -1
1) "5"
2) "1"
3) "2"
4) "3"
5) "55"
6) "8"
7) "9"
127.0.0.1:6379> linsert num after 1 66
(integer) 8
127.0.0.1:6379> lrange num 0 -1
1) "5"
2) "1"
3) "66"
4) "2"
5) "3"
6) "55"
7) "8"
8) "9"

以上, 就是关于 list值的相关命令, enjoy......

理解 Redis(6) - List 值的更多相关文章

  1. 理解 Redis(3) - 字符串值

    正如前面所讲的, redis 的数据结构就是一系列的键值对键 -> printable ASCII (可打印的 ASCII 码, 最大值是 512MB)值 -> Primitives (基 ...

  2. 理解 Redis(7) - Set 值

    unordered collection of unique strings.set值是唯一的字符串的无序集合, 把握住两个特点: 唯一, 无序. 清空所有的数据, 并清理显示界面: 127.0.0. ...

  3. 理解 Redis(5) - 哈希值

    哈希值存储示意图:首先, 我想先认真理解一下哈希值的数据结构:前面讲过, redis 存储的是键值对, 键永远都是可以打印的 ASCII 码, 值是字符串, 或者是以其他形式包裹的字符串. 上两节介绍 ...

  4. 深入理解Redis:底层数据结构

    简介 redis[1]是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorte ...

  5. 深入理解Redis主键失效原理及实现机制(转)

    原文:深入理解Redis主键失效原理及实现机制 作为一种定期清理无效数据的重要机制,主键失效存在于大多数缓存系统中,Redis 也不例外.在 Redis 提供的诸多命令中,EXPIRE.EXPIREA ...

  6. C++ : 从栈和堆来理解C#中的值类型和引用类型

    C++中并没有值类型和引用类型之说,标准变量或者自定义对象的存取默认是没有区别的.但如果深入地来看,就要了解C++中,管理数据的两大内存区域:栈和堆. 栈(stack)是类似于一个先进后出的抽屉.它的 ...

  7. 【原创】深入理解c++的右值引用

    0 左值和右值     一个左值表达式代表的是对象本身,而右值表达式代表的是对象的值:变量也是左值.   1 右值引用作用 为了支持移动操作(包括移动构造函数和移动赋值函数),C++才引入了一种新的引 ...

  8. 深入理解Redis内存模型

    前言 Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分. 我们使用Redis时,会接触Redis的5种对象类型(字符串 ...

  9. 深入理解redis复制原理

    原文:深入理解redis复制原理 1.复制过程 2.数据间的同步 3.全量复制 4.部分复制 5.心跳 6.异步复制 1.复制过程 从节点执行 slaveof 命令. 从节点只是保存了 slaveof ...

随机推荐

  1. Struts2 的 配置

    三.Struts2配置 Struts2的核心配置文件 1.名称和位置是固定的   在src下struts.xml 2.Struts根标签 Package Action Result Action Pa ...

  2. 深度估计&平面检测小结

    https://yq.aliyun.com/ziliao/582885 最近一段时间已知忙着赶图像分析与理解的项目,在三个星期内强行接触了CNN,MRF,Caffe,openCV在内的很多东西.现在项 ...

  3. OpenGL: 实现立体显示

    https://blog.csdn.net/augusdi/article/details/19922295 立体显示原理:设没有立体显示的模型视图矩阵ModelView为Mv,投影矩阵为Mp,则.物 ...

  4. Modbus库开发笔记之一:实现功能的基本设计(转)

    源: Modbus库开发笔记之一:实现功能的基本设计

  5. 余额表前后台操作和对应sql

    发生额的含义:产生于账行表. gl_je_lines账行表——>借贷(会产生额度,即发生额) —————————————————————————— gl_balances余额表: 余额   =  ...

  6. lnmp 安装redis-最全

    一. 安装redis 1.下载,解压,编译 $ wget http://download.redis.io/releases/redis-3.2.8.tar.gz $ tar -xzf redis-3 ...

  7. 保存canvas

    http://www.crazybunqnq.com/2018/09/01/PythonSeleniumSaveCanvas/ http://www.webhek.com/post/save-canv ...

  8. Python调用大漠插件

    Python版本要用32位的?我去官网下载,太慢了,就在腾讯软件里面下载了一个,结果实验成功 import win32com.client dm = win32com.client.Dispatch( ...

  9. centos系统swap设置 查看swap分区的方法

    交换分区swap,意思是“交换”.“实物交易”,它的功能就是在内存不够的情况下,操作系统先把内存中暂时不用的数据,存到硬盘的交换空间,腾出内存来让别的程序运行,和Windows的虚拟内存(pagefi ...

  10. pyglet self.

    import pyglet class T(pyglet.window.Window): def __init__(self): super(T, self).__init__() self.play ...