天天看点

redis之列表类型(list)——队列和栈简单实现

Redis列表是简单的字符串列表,排序插入顺序。您可以在头部或列表的尾部Redis的列表添加元素。

列表的最大长度为232 - 1 (每个列表超过4十亿元素4294967295)元素。

首先,插入数据到列表当中:

> lpush my_list1 zhibin
(integer) 1
> lpush my_list1 biki
(integer) 2
> rpush my_list1 good
(integer) 3
#查询队列的长度
> llen my_list1
(integer) 3
           

插入列表,可以使用lpush和rpush命令,left可以视为表头,right可以视为表尾。

获取列表中的数据:

#按范围取数据
> lrange my_list1 0 4
1) "biki"
2) "zhibin"
3) "good"
#从列表的左面弹出一个元素
> lpop my_list1
"biki"
           

如下表所示相关列出了一些基本的命令:

S.N. 命令 & 描述
1

BLPOP key1 [key2 ] timeout 

取出并获取列表中的第一个元素,或阻塞,直到有可用

2

BRPOP key1 [key2 ] timeout 

取出并获取列表中的最后一个元素,或阻塞,直到有可用

3

BRPOPLPUSH source destination timeout 

从列表中弹出一个值,它推到另一个列表并返回它;或阻塞,直到有可用

4

LINDEX key index 

从一个列表其索引获取对应的元素

5

LINSERT key BEFORE|AFTER pivot value 

在列表中的其他元素之后或之前插入一个元素

6

LLEN key 

获取列表的长度

7

LPOP key 

获取并取出列表中的第一个元素

8

LPUSH key value1 [value2] 

在前面加上一个或多个值的列表

9

LPUSHX key value 

在前面加上一个值列表,仅当列表中存在

10

LRANGE key start stop 

从一个列表获取各种元素

11

LREM key count value 

从列表中删除元素

12

LSET key index value 

在列表中的索引设置一个元素的值

13

LTRIM key start stop 

修剪列表到指定的范围内

14

RPOP key 

取出并获取列表中的最后一个元素

15

RPOPLPUSH source destination 

删除最后一个元素的列表,将其附加到另一个列表并返回它

16

RPUSH key value1 [value2] 

添加一个或多个值到列表

17

RPUSHX key value 

添加一个值列表,仅当列表中存在

参考连接:(http://www.yiibai.com/redis/redis_lists.html)

可以利用list类型实现的功能:

1.实现先进先出队列(FIFO)以及栈(LIFO)

队列在web应用的范围非常广,比如日志推送、任务处理等等,以往使用httpsqs实现队列,其实,使用redis的list类型,也可以实现队列。

> lpush list a
(integer) 1
> lpush list b
(integer) 2
> lpush list c
(integer) 3
#接下来,使用rpop取出队列
> rpop list
"a"
#思考一下,如果我们使用lpop会出现什么情况呢?
> lpop list
"c"
#结果是最后一个入列的元素"c"出列了,这不就是一个栈的结构么?
           

继续阅读