Redis五大类型之List操作

概述

Redis的List类型,key值中存放了一个head和tail指针,可以快速访问头和尾的数据
在这里插入图片描述

List的常用案例

正如你可以从上面的例子中猜到的,list可被用来实现聊天系统。还可以作为不同进程间传递消息的队列。关键是,你可以每次都以原先添加的顺序访问数据。这不需要任何SQL ORDER BY 操作,将会非常快,也会很容易扩展到百万级别元素的规模。

例如在评级系统中,比如社会化新闻网站 reddit.com,你可以把每个新提交的链接添加到一个list,用LRANGE可简单的对结果分页。

在博客引擎实现中,你可为每篇日志设置一个list,在该list中推入博客评论,等等。

List可以理解为链表

1.栈操作
2.队列操作
3.数组操作

List操作

一、栈操作
(1)栈操作,先进后出

127.0.0.1:6379[6]> lpush k1 a b c d
(integer) 4
127.0.0.1:6379[6]> LRANGE k1 0 -1
1) "d"
2) "c"
3) "b"
4) "a"

(2)同向操作(先进先出)

127.0.0.1:6379[6]> LRANGE k1 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379[6]> lpop k1
"d"

二、队列操作
(1)队列操作,先进先出

127.0.0.1:6379[6]> rpush k2 a b c d
(integer) 4、
127.0.0.1:6379[6]> LRANGE k2 0 -1
1) "a"
2) "b"
3) "c"
4) "d"

(2)相反操作(先进后出)

127.0.0.1:6379[6]> LRANGE k1 0 -1
1) "c"
2) "b"
3) "a"
127.0.0.1:6379[6]> RPOP k1
"a"

(3)LINSERT 在第一个字符a之前添加1(只针对第一个出现的字符)

127.0.0.1:6379[6]> LRANGE k1 0 -1
1) "e"
2) "d"
3) "c"
4) "a"
5) "b"
6) "a"
127.0.0.1:6379[6]> LINSERT k1 before a 1
(integer) 7
127.0.0.1:6379[6]> LRANGE k1 0 -1
1) "e"
2) "d"
3) "c"
4) "1"
5) "a"
6) "b"
7) "a"

(4)删除k1中两个a

 LREM k1 2 a

(5)RPOPLPUSH 删除一个队里的最后一只值,并添加到另外一个队列里面

127.0.0.1:6379[6]> LRANGE k1 0 -1
1) "c"
2) "b"
3) "b"
4) "a"
127.0.0.1:6379[6]> del k2
(integer) 1
127.0.0.1:6379[6]> lpush k2 1 2 3 4
(integer) 4
127.0.0.1:6379[6]> RPOPLPUSH k1 k2
"a"
127.0.0.1:6379[6]> LRANGE k1 0 -1
1) "c"
2) "b"
3) "b"
127.0.0.1:6379[6]> LRANGE k2 0 -1
1) "a"
2) "4"
3) "3"
4) "2"
5) "1"

三、数组操作
(1)获取数组值

LRANGE k1 0 -1

(2)删除k1中除了第一位到倒数第二位(首位和末尾值删除)

127.0.0.1:6379[6]> LRANGE k1 0 -1
1) "d"
2) "c"
3) "b"
4) "b"
5) "a"
6) "b"
7) "a"

127.0.0.1:6379[6]> LTRIM k1 1 -2
OK
127.0.0.1:6379[6]> LRANGE k1 0 -1
1) "c"
2) "b"
3) "b"
4) "a"
5) "b"

四、阻塞队列 -单播队列(FIFO)
(1)移除k1中首位元素 (0:阻塞时间,一直阻塞; 1 : 阻塞1秒)

BLPOP k1 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值