1.ArrayList与LinkList的区别redis
ArrayList的使用数组存入的方式,因此根据索引查询数据速度快,而增删元素是比较慢的,它须要将数据一位一位的移动,知道达到要求。数组
LinkList使用的是双向链表的方式存储数据的,每个元素都记录先后元素的指针,因此插入、删除数据是很快的,可是想要查找元素,就相对比较慢了。若是查询前几个元素或者后面的几个元素是比较快的。spa
2.redis list的介绍指针
列表类型(list)能够存储一个有序的列表字符串,经常使用的操做是向列表两端添加元素,或者获取列表的某一段。code
列表使用的是双向链表实现的吗,因此向列表中添加元素的复杂度为o(1),获取越接近两端的数据,速度越快,若是数据量很大,查找中间是很慢的。blog
3.命令索引
3.1向两端添加元素图片
向左边添加元素。字符串
语法:LPUSH key value [value]io
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中建立商品评论列表,由于评论只是显示前面的几条数据,这样响应的速度是很快的。