redis 第 6 篇 Redis数据类型----List

Arraylist和linkedlist的区别

Arraylist是使用数组来存储数据,特点:查询快、增删慢

Linkedlist是使用双向链表存储数据,特点:增删快、查询慢,但是查询链表两端的数据也很快。

 

Redis的list是采用来链表来存储的,所以对于redis的list数据类型的操作,是操作list的两端数据来操作的。

 

 

  • 命令

    向列表两端增加元素

  • 向列表左边增加元素

  •  

语法:LPUSH key value [value ...]

127.0.0.1:6379> lpush list:1 1 2 3

(integer) 3

 

  • 向列表右边增加元素

  •  

语法:RPUSH key value [value ...]

127.0.0.1:6379> rpush list:1 4 5 6

(integer) 3

 

查看列表

LRANGE命令是列表类型最常用的命令之一,获取列表中的某一片段,将返回start、stop之间的所有元素(包含两端的元素),索引从0开始。索引可以是负数,如:-1”代表最后边的一个元素

 

语法:LRANGE key start stop

127.0.0.1:6379> lrange list:1 0 2

1) "2"

2) "1"

3) "4"

 

127.0.0.1:6379> lrange list1 0 -1

 

从列表两端弹出元素

LPOP命令从列表左边弹出一个元素,会分两步完成:

第一步是将列表左边的元素从列表中移除

第二步是返回被移除的元素值。

 

语法:

LPOP key

RPOP key

127.0.0.1:6379> lpop list:1

"3“

127.0.0.1:6379> rpop list:1

"6“

 

获取列表中元素的个数

 

语法:LLEN key

127.0.0.1:6379> llen list:1

(integer) 2

 

其它命令

 

删除列表中指定的值

 

LREM命令会删除列表中前count个值为value的元素,返回实际删除的元素个数。根据count值的不同,该命令的执行方式会有所不同:

  1. 当count>0时, LREM会从列表左边开始删除。
  2. 当count<0时, LREM会从列表后边开始删除。
  3. 当count=0时, LREM删除所有值为value的元素。

 

语法:LREM key count value

 

  • 获得/设置指定索引的元素值
  • 获得指定索引的元素值

语法:LINDEX key index

127.0.0.1:6379> lindex l:list 2

"1"

 

  • 设置指定索引的元素值

  •  

语法:LSET key index value

127.0.0.1:6379> lset l:list 2 2

OK

127.0.0.1:6379> lrange l:list 0 -1

1) "6"

2) "5"

3) "2"

4) "2"

 

只保留列表指定片段

 

指定范围和LRANGE一致

 

语法:LTRIM key start stop

127.0.0.1:6379> lrange l:list 0 -1

1) "6"

2) "5"

3) "0"

4) "2"

127.0.0.1:6379> ltrim l:list 0 2

OK

127.0.0.1:6379> lrange l:list 0 -1

1) "6"

2) "5"

3) "0"

 

 

向列表中插入元素

 

该命令首先会在列表中从左到右查找值为pivot的元素,然后根据第二个参数是BEFORE还是AFTER来决定将value插入到该元素的前面还是后面。

 

 

语法:LINSERT key BEFORE|AFTER pivot value

127.0.0.1:6379> lrange list 0 -1

1) "3"

2) "2"

3) "1"

127.0.0.1:6379> linsert list after 3 4

(integer) 4

127.0.0.1:6379> lrange list 0 -1

1) "3"

2) "4"

3) "2"

4) "1"

 

将元素从一个列表转移到另一个列表中

 

语法:RPOPLPUSH source destination

127.0.0.1:6379> rpoplpush list newlist

"1"

127.0.0.1:6379> lrange newlist 0 -1

1) "1"

127.0.0.1:6379> lrange list 0 -1

1) "3"

2) "4"

3) "2"

 

应用

商品评论列表

思路:

在Redis中创建商品评论列表

用户发布商品评论,将评论信息转成json存储到list中。

用户在页面查询评论列表,从redis中取出json数据展示到页面。

 

定义商品评论列表key:

商品编号为1001的商品评论key【items: comment:1001】

192.168.101.3:7001> LPUSH items:comment:1001 '{"id":1,"name":"商品不错,很好!!","date":1430295077289}'

猜你喜欢

转载自blog.csdn.net/qq_35524586/article/details/84098432