设为首页 收藏本站
查看: 973|回复: 0

[经验分享] Redis list 存储的操作方法

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-9-26 08:59:42 | 显示全部楼层 |阅读模式
前俩篇,介绍了string与hashes,本章介绍list的操作方法
首先我们使用redis-cli进入redis
1
2
[iyunv@web1 ~]# redis-cli
127.0.0.1:6379>



1、添加或插入
a>lpush

方法:lpush key value
描述:从头压入一个元素
1
2
3
4
5
6
7
8
9
10
127.0.0.1:6379> lpush list1 one
(integer) 1
127.0.0.1:6379> lpush list1 two
(integer) 2
127.0.0.1:6379> lpush list1 three
(integer) 3
127.0.0.1:6379> lrange list1 0 -1
1) "three"
2) "two"
3) "one"



b>lpushx
方法:pushx key value
描述:只有当key存在,才会从表头插入一个元素,否则不会插入
1
2
3
4
5
6
7
8
9
10
11
127.0.0.1:6379> lrange list1 0 -1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> lpushx list1 hello
(integer) 4
127.0.0.1:6379> lrange list1 0 -1
1) "hello"
2) "three"
3) "two"
4) "one"



d>rpush

方法:rpush key value
描述:从尾压入一个元素
1
2
3
4
5
6
7
8
9
10
127.0.0.1:6379> rpush list4 one
(integer) 1
127.0.0.1:6379> rpush list4 two
(integer) 2
127.0.0.1:6379> rpush list4 three
(integer) 3
127.0.0.1:6379> lrange list4 0 -1
1) "one"
2) "two"
3) "three"



e>rpushx
方法:rpush key value

描述:只有当key存在,才会从尾插入一个元素,否则不会插入
1
2
3
4
5
6
7
8
9
10
11
127.0.0.1:6379> lrange list4 0 -1
1) "one"
2) "two"
3) "three"
127.0.0.1:6379> rpushx list4 hello
(integer) 4
127.0.0.1:6379> lrange list4 0 -1
1) "one"
2) "two"
3) "three"
4) "hello"



f>linsert

方法:linsert before|after pivot value
描述:before插入pivot前,after插入pivot后
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
127.0.0.1:6379> lrange list5 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> linsert list5 before 3 hello            \\使用before插入3的前面hello
(integer) 6
127.0.0.1:6379> lrange list5 0 -1
1) "1"
2) "2"
3) "hello"
4) "3"
5) "4"
6) "5"



127.0.0.1:6379> linsert list5 after 3 hello        \\使用after插入3的后面hello
(integer) 7
127.0.0.1:6379> lrange list5 0 -1
1) "1"
2) "2"
3) "hello"
4) "3"
5) "hello"
6) "4"
7) "5"
2、查看

a>lindex

方法: lindex key index
描述: 以index下标查看key的value
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
127.0.0.1:6379> lrange list5 0 -1
1) "1"
2) "2"
3) "hello"
4) "3"
5) "hello"
6) "4"
7) "5"
127.0.0.1:6379> lindex list5 0
"1"
127.0.0.1:6379> lindex list5 1
"2"
127.0.0.1:6379> lindex list5 2
"hello"
127.0.0.1:6379> lindex list5 3
"3"
127.0.0.1:6379> lindex list5 4
"hello"
127.0.0.1:6379> lindex list5 5
"4"
127.0.0.1:6379> lindex list5 6
"5"
127.0.0.1:6379> lindex list5 7
(nil)



b>lrange

方法:lrange key start end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
127.0.0.1:6379> lrange list5 0 -1
1) "1"
2) "2"
3) "hello"
4) "3"
5) "hello"
6) "4"
7) "5"
127.0.0.1:6379> lrange list5 0 4
1) "1"
2) "2"
3) "hello"
4) "3"
5) "hello"
127.0.0.1:6379> lrange list5 0 3
1) "1"
2) "2"
3) "hello"
4) "3"



c>llen

方法:llen key

描述:查看key元素的个数
1
2
3
4
5
6
7
8
9
10
11
12
127.0.0.1:6379> llen list9
(integer) 5
127.0.0.1:6379> lrange list9 0 -1
1) "0"
2) "1"
3) "2"
4) "3"
5) "4"
127.0.0.1:6379> llen list8
(integer) 0
127.0.0.1:6379> lrange list8 0 -1
(empty list or set)



3、修改

a>lset
方法:lset key index value
描述:如果key的index下标有值则修改,否则报错
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
127.0.0.1:6379> lrange list5 0 -1
1) "1"
2) "2"
3) "hello"
4) "3"
5) "hello"
6) "4"
7) "5"
127.0.0.1:6379> lset list5 3 three
OK
127.0.0.1:6379> lrange list5 0 -1
1) "1"
2) "2"
3) "hello"
4) "three"
5) "hello"
6) "4"
7) "5"
127.0.0.1:6379> lset list5 10 three
(error) ERR index out of range
127.0.0.1:6379> lrange list5 0 -1
1) "1"
2) "2"
3) "hello"
4) "three"
5) "hello"
6) "4"
7) "5"



4、删除
a>ltrim

方法:ltrim key start end
描述:保留指定key下标start end 范围的value
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
127.0.0.1:6379> lrange list5 0 -1
1) "1"
2) "2"
3) "hello"
4) "three"
5) "hello"
6) "4"
7) "5"
127.0.0.1:6379> ltrim list5 2 6
OK
127.0.0.1:6379> lrange list5 0 -1
1) "hello"
2) "three"
3) "hello"
4) "4"
5) "5"



b>lrem

方法:lrem key count value
描述:删除指定count的value元素,并返回count,如果value的count为0,从表头开始删除所有等于value,如果count<0则从尾开始删除count个数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
127.0.0.1:6379> lpush list6 6 6 6 6 6 7 6 6 6 6 6 6
(integer) 12
127.0.0.1:6379> lrange list6 0 -1
1) "6"
2) "6"
3) "6"
4) "6"
5) "6"
6) "6"
7) "7"
8) "6"
9) "6"
10) "6"
11) "6"
12) "6"
127.0.0.1:6379> lrem list6 3 6            \\删除3个value等于6的,该删除是从表头开始
(integer) 3
127.0.0.1:6379> lrange list6 0 -1
1) "6"
2) "6"
3) "6"
4) "7"
5) "6"
6) "6"
7) "6"
8) "6"
9) "6"
127.0.0.1:6379> lrem list6 -3 6            \\删除3个value等于6的,该删除是从表尾开始
(integer) 3
127.0.0.1:6379> lrange list6 0 -1
1) "6"
2) "6"
3) "6"
4) "7"
5) "6"
6) "6"



c>rpop
方法:rpop key
描述:从尾移除并返回值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
127.0.0.1:6379> lrange list6 0 -1
1) "6"
2) "6"
3) "6"
4) "7"
5) "6"
6) "6"
127.0.0.1:6379> rpop list6
"6"
127.0.0.1:6379> lrange list6 0 -1
1) "6"
2) "6"
3) "6"
4) "7"
5) "6"



d>lpop
方法:lpop key
描述:从头移除并返回值
1
2
3
4
5
6
7
127.0.0.1:6379> lpop list6
"6"
127.0.0.1:6379> lrange list6 0 -1
1) "6"
2) "6"
3) "7"
4) "6"



e>rpoplpush
方法:rpoplpush key1 key2
描述:从key1尾移除一个value压入到key2头
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
127.0.0.1:6379> rpush list8 1 2
(integer) 2
127.0.0.1:6379> rpush list9 3 4
(integer) 2
127.0.0.1:6379> lrange list8 0 -1
1) "1"
2) "2"
127.0.0.1:6379> lrange list9 0 -1
1) "3"
2) "4"
127.0.0.1:6379> rpoplpush list8 list9
"2"
127.0.0.1:6379> lrange list8 0 -1
1) "1"
127.0.0.1:6379> lrange list9 0 -1
1) "2"
2) "3"
3) "4"



f>blpop

方法:blpop key [key...] timeout
描述:从key头取出,第一个元素,如果没有值则执行timeout设定的阻塞时长,期间如果有值则立马取出
1
2
3
4
5
6
7
8
9
10
11
12
127.0.0.1:6379> lpush list8 1 2
(integer) 2
127.0.0.1:6379> blpop list8 20
1) "list8"
2) "2"
127.0.0.1:6379> blpop list8 20
1) "list8"
2) "1"
127.0.0.1:6379> blpop list8 20            \\在另外一台执行127.0.0.1:6379> lpush list8 3 在20秒的timeout期间,有元素压入,则立马取出并显示值
1) "list8"
2) "3"
(2.69s)



g>brpop
方法:blpop key [key...] timeout
描述:从key尾取出,第一个元素,如果没有值则执行timeout设定的阻塞时长,期间如果有值则立马取出
1
2
3
4
5
6
7
8
9
10
11
12
13
127.0.0.1:6379> lrange list8 0 -1
1) "2"
2) "1"
127.0.0.1:6379> brpop list8 20
1) "list8"
2) "1"
127.0.0.1:6379> brpop list8 20
1) "list8"
2) "2"
127.0.0.1:6379> brpop list8 20         \\在另外一台执行127.0.0.1:6379> rpush list8 3 在20秒的timeout期间,有元素压入,则立马取出并显示值
1) "list8"
2) "3"
(3.34s)



h>brpoplpush

方法:brpoplpush key1 key2 timeout
描述:从key1尾移除一个value压入到key2,如果没有执行timeout设定的阻塞时长,期间如果有值则立马取出。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
127.0.0.1:6379> rpush list8 1 2
(integer) 2
127.0.0.1:6379> rpush list9 3 4
(integer) 2
127.0.0.1:6379> lrange list8 0 -1
1) "1"
2) "2"
127.0.0.1:6379> lrange list9 0 -1
1) "3"
2) "4"
127.0.0.1:6379> brpoplpush list8 list9 20
"2"
127.0.0.1:6379> brpoplpush list8 list9 20
"1"
127.0.0.1:6379> brpoplpush list8 list9 20            \\在另外一台执行127.0.0.1:6379> rpush list8 0 在20秒的timeout期间,有元素压入,则立马取出并显示值
"0"
(2.70s)





至此Redis list就介绍完毕la


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-277502-1-1.html 上篇帖子: Redis hashes存储的操作方法 下篇帖子: Redis Sets无序集合 存储操作方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表