Redis列表(List)
就像Java中的LinkedList一样,一个key中可以存放多个value。另外,它是一个字符串链表,也就是说,他对头尾两端插入删除的操作效率很高,但是对中间位置的元素操作效率就很低了,因为链表需要逐个搜索找到对应元素。
lpush [key] [value1][value2][…]
rpush [key] [value1][value2][…]
lrange [key] [begin] [end] (如果end是-1则是全部选中)
如图所示,lpush和rpush都是往一个list里面添加数据,但是存储的顺序是相反的。
list就好像一根中空的管子,如果是lpush的话,那么就从左边往右边塞数据,读取数据的时候就从左往右读取;如果是rpush的话,就是从右边往左边开始填数据,自然第一个加进去的1就是在第一个位置。lpop [key]
rpop [key]
同理,lpop是从左边移出一个数据,rpop是从右边移出一个数据。(存放顺序假设第一个数据是在最左边)
lindex [key] [index]
如图,按索引搜索,下标从0开始。llen [key] (输出list的长度)
lrem [key] [num] [value]
在list中,删除num个value。
例:lrem list2 1 1
这条语句的意思是,在k1中删除1个【1】。
ltrim [key] [begin] [end]
截取key中,begin到end的数据,并覆盖key原来的值。
rpoplpush [key1] [key2]
如图,从key1中,在最右边弹出一个值加到key2的最左边。lset [key] [begin] [end]
相当于string中的set方法,lset可以设置(修改)list中某一个位置的值。
linsert [key] before/after [tag] [value]
如图,在key中,在元素【x】之前加入【java】。也可以选择使用after,加在所给元素的后面。
Redis集合(Set)
这个Set如同Java的Set一样,不允许重复的元素。
sadd [key] [value1][value2][…]
smembers [key]
如图,若加入了同样的元素,只会存入一个。
smembers是显示该key的值,不需要写入范围。
sismembers [key] [value]
查看某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的并集,返回并集的结果。