redis常用的list类型的操作命令:

lpush key value :在key对应的list的头部(左边)加入字符串元素

lpushx key value:和lpush类似,但是lpushx会校验key是否存在,若key不存在则不进行任何操作

rpush key string :在key对应的list的尾部(右边)加入字符串元素

rpushx key string :和rpush 类似,但是rpushx 会校验key是否存在,若key不存在则不进行任何操作

 

lpop key:在key对应的list的头部删除元素

rpop key:在key对应的list的尾部删除元素

 

llen key:key对应的list的长度

lrange key [start end]:返回指定区间的元素,下标从0开始,并不改变原来的list里面的值

ltrim key start end :截取list,下标也是从0开始,删除列表指定区间左右两边的数据,只保留区间内的数据,会改变原来list的值

lindex key index:返回列表中位于index处元素的值。index从0开始,若为负数则表示从右测读取,如-1表示倒数第一个元素,-2表示倒数第二个元素,当index超出索引时返回nil

怎么理解redis里面的list呢?

        你可以把它想象成一个横着放的箱子,左右两边都可以进出,左边是头,右边是尾,这样理解是最简单不过的了。

redis里面的list的特点是什么?

        list是有序的数组,跟java里面的list可以对比来记忆,他们也差不多。

举例:

    1.lpushx操作的key必须是已经存在的list,不然不进行任何操作:

192.168.23.112:6379> keys * (empty list or set) 192.168.23.112:6379> lpushx fruit apple (integer) 0 192.168.23.112:6379> keys * (empty list or set)

2.redis操作list演示

192.168.23.112:6379> lpush fruit apple
(integer) 1
192.168.23.112:6379> keys *
1) "fruit"
192.168.23.112:6379> lpush fruit grape
(integer) 2
192.168.23.112:6379> keys *
1) "fruit"
192.168.23.112:6379> llen fruit
(integer) 2
192.168.23.112:6379> rpush fruit banana
(integer) 3
192.168.23.112:6379> lrange fruit 0 200
1) "grape"
2) "apple"
3) "banana"
192.168.23.112:6379> lindex fruit 0
"grape"
192.168.23.112:6379> lindex fruit -1
"banana"
192.168.23.112:6379> lindex fruit -2
"apple"
192.168.23.112:6379> lindex fruit 2
"banana"
192.168.23.112:6379> lindex fruit 3
(nil)
192.168.23.112:6379> llen fruit 
(integer) 3
192.168.23.112:6379> lpush fruit pear
(integer) 4
192.168.23.112:6379> lpush fruit strawberry 
(integer) 5
192.168.23.112:6379> lpush fruit litchi
(integer) 6
192.168.23.112:6379> llen fruit 
(integer) 6
192.168.23.112:6379> lrange fruit 0 6
1) "litchi"
2) "strawberry"
3) "pear"
4) "grape"
5) "apple"
6) "banana"
192.168.23.112:6379> ltrim fruit 1 3
OK
192.168.23.112:6379> lrange fruit 0 6
1) "strawberry"
2) "pear"
3) "grape"

说明:

        lrange用于获取已有list的子list,如果你不知道总长度有多长,可以先使用llen命令获取list的长度,不过lrange的end如果大于当前操作的list的长度的话,redis也不会报错, 取得的值仍然是lrange list 0  len,其中len等于llen list-1。