Redis列表(List)

就像Java中的LinkedList一样,一个key中可以存放多个value。另外,它是一个字符串链表,也就是说,他对头尾两端插入删除的操作效率很高,但是对中间位置的元素操作效率就很低了,因为链表需要逐个搜索找到对应元素。

lpush [key] [value1][value2][…]
 rpush [key] [value1][value2][…]
 lrange [key] [begin] [end] (如果end是-1则是全部选中)

redis的list的remove redis list key_数据库


redis的list的remove redis list key_链表_02


redis的list的remove redis list key_链表_03


如图所示,lpush和rpush都是往一个list里面添加数据,但是存储的顺序是相反的。

list就好像一根中空的管子,如果是lpush的话,那么就从左边往右边塞数据,读取数据的时候就从左往右读取;如果是rpush的话,就是从右边往左边开始填数据,自然第一个加进去的1就是在第一个位置。lpop [key]

rpop [key]

redis的list的remove redis list key_redis_04

同理,lpop是从左边移出一个数据,rpop是从右边移出一个数据。(存放顺序假设第一个数据是在最左边)

lindex [key] [index]

redis的list的remove redis list key_数据_05


redis的list的remove redis list key_redis的list的remove_06


如图,按索引搜索,下标从0开始。llen [key] (输出list的长度)

redis的list的remove redis list key_redis的list的remove_07

lrem [key] [num] [value]

在list中,删除num个value。

例:lrem list2 1 1

这条语句的意思是,在k1中删除1个【1】。

redis的list的remove redis list key_redis_08

ltrim [key] [begin] [end]

截取key中,begin到end的数据,并覆盖key原来的值。

redis的list的remove redis list key_链表_09

rpoplpush [key1] [key2]

redis的list的remove redis list key_链表_10


如图,从key1中,在最右边弹出一个值加到key2的最左边。lset [key] [begin] [end]

redis的list的remove redis list key_数据库_11


相当于string中的set方法,lset可以设置(修改)list中某一个位置的值。

linsert [key] before/after [tag] [value]

redis的list的remove redis list key_redis_12


如图,在key中,在元素【x】之前加入【java】。也可以选择使用after,加在所给元素的后面。

Redis集合(Set)

这个Set如同Java的Set一样,不允许重复的元素。

sadd [key] [value1][value2][…]

smembers [key]

redis的list的remove redis list key_redis_13


如图,若加入了同样的元素,只会存入一个。

smembers是显示该key的值,不需要写入范围。

sismembers [key] [value]

redis的list的remove redis list key_redis的list的remove_14


查看某value是否存在于所给的key中,存在返回1,不存在返回0。

srem [key] [value]
与lrem类似,在key中删除一个value。因为set中不会有两个相同的value,所以不需要写删除数量。

spop [key]
从给定的key中随机弹出一个值。

srandmember [key] [num]
从给定的key中随机返回一个值。但是不像spop,srandmember不会影响key的值。

scard [key]
与llen类似,返回key的长度。

smove [key1] [key2] [value]
与rpoplpush类似,但set需要指定value。

sdiff [key1] [key2]
求key1和key2的差集,返回的key1中有但key2没有的值,可能会有多个或者没有。

sinter [key1] [key2]
求key1和key2的交集,返回的key1中有且key2也有的值,可能会有多个或者没有。

sunion [key1] [key2]
求key1和key2的并集,返回并集的结果。