Redis学习笔记(六)---List

1.ArrayList与LinkList的区别

ArrayList的使用数组存入的方式,所以根据索引查询数据速度快,而增删元素是比较慢的,它需要将数据一位一位的移动,知道达到要求。

LinkList使用的是双向链表的方式存储数据的,每一个元素都记录前后元素的指针,所以插入、删除数据是很快的,但是想要查找元素,就相对比较慢了。如果查询前几个元素或者后面的几个元素是比较快的。

2.redis list的介绍

列表类型(list)可以存储一个有序的列表字符串,常用的操作是向列表两端添加元素,或者获取列表的某一段。

列表使用的是双向链表实现的吗,所以向列表中添加元素的复杂度为o(1),获取越接近两端的数据,速度越快,如果数据量很大,查找中间是很慢的。

3.命令

3.1向两端添加元素

向左边添加元素。

语法:LPUSH key value [value]

127.0.0.1:6379> lpush list:1 2 4 6
(integer) 3

向左边添加元素。

语法:RPUSH key value [value]

 
127.0.0.1:6379> Rpush list:1 7 8 9
(integer) 3

查看列表

LRANGE命令是列表最常用的命令之一,获取列表中的某一段,将返回tart、是图片之间的数据返回,从0开始,索引可以为负,-1代表最后的一个元素。

语法:LRANGE key start stop

127.0.0.1:6379> lrange list:1 0 2

从列表的两端将数据弹出

LPOP命令从列表左边弹出一个元素,会分两步完成:将数据删除,将数据返回。

语法:LPOP key  左弹出

      RPOP key 右弹出

127.0.0.1:6379> lpop list:1

127.0.0.1:6379> rpop list:1

获取数据的个数

语法:LLEN key

127.0.0.1:6379> llen list:1

删除所有的值

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

当count>0时, LREM会从列表左边开始删除

当count<0时, LREM会从列表后边开始删除。

当count=0时, LREM删除所有值为value的元素。

语法:LREM key count value

获取、设置指定索引的元素值

语法:LINDEX key index

127.0.0.1:6379> lindex l:list 2

设置值

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

 只保留保留列表指定的片段

LTRIM key start stop

127.0.0.1:6379> lrange l:list 0 -1

向列表中插入数据

语法:LINSERT key BEFORE|AFTER pivot value

linsert list after 3 4
linsert list before 3 4

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

语法:RPOPLPUSH source destination

RPOPLPUSH list1 list2;

4.应用场景:

Redis中创建商品评论列表,因为评论只是显示前面的几条数据,这样响应的速度是很快的。

原文地址:https://www.cnblogs.com/kw28188151/p/8254222.html