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中创建商品评论列表,因为评论只是显示前面的几条数据,这样响应的速度是很快的。