您的位置:首页 > 数据库 > Redis

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

2015-12-21 13:05 906 查看
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.命令 & 描述
1BLPOP key1 [key2 ] timeout 

取出并获取列表中的第一个元素,或阻塞,直到有可用
2BRPOP key1 [key2 ] timeout 

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

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

从一个列表其索引获取对应的元素
5LINSERT key BEFORE|AFTER pivot value 

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

获取列表的长度
7LPOP key 

获取并取出列表中的第一个元素
8LPUSH key value1 [value2] 

在前面加上一个或多个值的列表
9LPUSHX key value 

在前面加上一个值列表,仅当列表中存在
10LRANGE key start stop 

从一个列表获取各种元素
11LREM key count value 

从列表中删除元素
12LSET key index value 

在列表中的索引设置一个元素的值
13LTRIM key start stop 

修剪列表到指定的范围内
14RPOP key 

取出并获取列表中的最后一个元素
15RPOPLPUSH source destination 

删除最后一个元素的列表,将其附加到另一个列表并返回它
16RPUSH key value1 [value2] 

添加一个或多个值到列表
17RPUSHX 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"出列了,这不就是一个栈的结构么?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: