关灯
护眼 字体:大
中
小
上一章
章节列表
下一页
列表(Lists)是Redis中的另一种基本数据结构。
列表就像是一根平放的水管:可以从左边往里塞入数据,也可以从右边往里塞入数据;可以从左边读取数据,也可以从右边读取数据。
Redis中的列表,与Python的列表在行为上有不少相似之处,可以对比着学习。列表有17条不同的操作命令,本书将会介绍其中的7条常用命令。
5.3.1 使用redis-cli实现
1.插入数据
列表分左右两个方向,所以可以从左右两侧插入。“插入(Insert)”可以理解为“推入(Push)”。又由于“左(Left)”的首字母为“L”,“右(Right)”的首字母为“R”,所以,从列表左侧插入数据的命令为“LPush”,从列表右侧插入数据的命令为“RPush”。
Redis的命令是不区分大小写的,所以一般用小写“lpush”和“rpush”便于辨认。
向列表中插入数据的命令为:
lpush key value1 value2 value3
rpush key value1 value2 value3
其中,Key的命名要求与字符串一样,可以是数字、字母下划线和中文,但不建议使用中文。
Value可以有1个或者多个。如有多个value,应使用空格将它们隔开。如果一个value内部本身就有空格,那么就使用引号包起来。
(1)从列表左侧插入数据,代码实例如下:
lpush example_list hello
lpush example_list how are you
lpush example_list "are you ok?" fine thank you
用“lpush”插入数据的流程如图5-28所示。
图5-28 lpush示意图
(2)用“rpush”插入数据的写法与“lpush”完全相同:
用“rpush”插入数据的流程如图5-29所示。
图5-29 rpush示意图
列表可以同时从左边和右边插入数据,见下方代码:
lpush example_left_right 123
rpush example_left_right 456
lpush example_left_right 789
添加完数据后,Redis当前Key的结构如图5-30所示。
图5-30 添加3个列表后的Key
列表里可以有成千上万上百万的数据,所以,使用列表控制 Key 的规模是一种比较好的选择。
2.查看数据
(1)查看列表的长度。
由于一个列表里面可以存放非常多的数据,因此,可以使用命令“llen”来查看列表的长度。命令格式为:
llen key
运行效果如图5-31所示。
图5-31 查看列表里面有多少个数据
(2)根据索引查看数据。
与Python的列表一样,Redis的列表也是有“索引”的。可以使用命令“lrange”来根据索引查看数据。
索引从最左边开始编号,从0到“列表长度-1”。例如,左边第1个数据索引为0,第2个数据索引为1……第7个元素的索引为6,第8个元素的索引为7。
根据索引查看数据的命令格式为:
lrange 0 开始索引 结束索引
例如,查看索引为6的数据:
lrange example_list 6 6
查看索引从2(包括2)到5(包括5)的数据:
lrange example_list 2 5
运行效果如图5-32所示。
图5-32 使用索引查看列表数据
(3)查看列表的所有数据。
Redis的列表也支持“负索引”,索引“-1”表示最右边的数据,“-2”表示右数第2个数据,以此类推。
因此,如果要查看列表的所有数据,可以使用命令:
lrange key 0 -1
运行效果如图5-33所示。
图5-33 查看列表所有数据
提示:
由于一个列表可以储存几百万条数据,所以,绝对不要冒然列出一个列表里面的所有数据,否则可能导致大量数据输出而瞬间耗尽系统的I/O资源。
应该是:先查看列表的长度,如确定数据量很小,则列出所有的值;如果数据量很大,则可以使用索引查看头几条数据与末尾几条数据。
查看列表的右边5条数据:
lrange key -5 -1
(4)弹出数据。
除了读取数据外,还能从列表里面“弹出(Pop)”数据,弹出也分为左右两个方向。从左边弹出数据使用的命令为“lpop”,从右边弹出数据使用的命令为“rpop”。命令格式为:
lpop key
rpop key
需要注意的是,在弹出数据的同时,被弹出的这个数据也会被从列表中删除,如图5-34所示。
从图5-34可以看出,列表“example_list”原有8条数据,首先从左侧弹出“you”,列表还剩7条数据,再从右侧弹出“hello”,最后列表还剩6条数据。
图5-34 从列表的左右侧弹出数据
3.修改数据
Redis的列表,可以根据数据的索引修改数据,使用的命令是“lset”,命令格式为:
lset key index 新的值
运行效果如图5-35所示。
图5-35 使用lset修改列表里面的数据
5.3.2 使用Python实现
m.qiduwx.com提示您,本章没有阅读完,点击下一页进入下一页阅读!
上一章
章节列表
下一页