redis基本类型和使用方法详解

2020-02-07 18:01:47王振洲

用途

    列表页

set

redis的set使用值为空的散列表(hash table)实现。

SADD key member [member ...] 加入set中不存在的元素;返回成功加入的值的个数

SREM key member [member ... ] 删除set中存在的元素;返回成功删除的个数

SPOP key 随机选取一个元素,弹出并返回。如果key不存在,返回nil。

SMEMBERS key 获取所有元素

SISMEMBER key member 判断元素是否在集合中,存在返回1;key或者member不存在,返回0。

SCARD key 获取元素个数

SDIFF key1 [key2 ... ] 集合求差集,key1中存在,key2中不存在的

SINTER key [key ... ] 集合求交集

SUNION key [key ... ] 集合求并集

SDIFFSTORE destination key1 [key2 ... ] 集合求差集,并存入destination中。

SINTERSTORE destination key [key ... ] 集合求交集,并存入destination中。

SUNIONSTORE destination key [key ... ] 集合求并集,并存入destination中。

SRANDMEMBER key [count] 随机选取count个元素,不带参数count时,选取一个。count=0,返回空列表;count > 0,选择min(count, scard)个数据,且不重复,最多返回所有元素; count < 0 选择|count|个元素,有可能重复。

SMOVE source destination member 原子性的将参数中的成员从source键移入到destination键所关联的Set中。因此在某一时刻,该成员或者出现在source中,或者出现在destination中。如果该成员在source中并不存在,该命令将不会再执行任何操作并返回0,否则,该成员将从source移入到destination。如果此时该成员已经在destination中存在,那么该命令仅是将该成员从source中移出。如果和Key关联的Value不是Set,将返回相关的错误信息。返回1表示正常移动,0表示source中并不包含参数成员。

127.0.0.1:6379> sadd set1 a b ##添加两个不存在的元素
(integer) 2
127.0.0.1:6379> sadd set1 a c ##添加成功一个元素c
(integer) 1
127.0.0.1:6379> smembers set1 ##获取所有元素
1) "c"
2) "b"
3) "a"
127.0.0.1:6379> srem set1 d b ##删除成功一个元素
(integer) 1
127.0.0.1:6379> smembers set1
1) "c"
2) "a"
127.0.0.1:6379> sismember set1 a 
(integer) 1
127.0.0.1:6379> sadd set1 b
(integer) 1
127.0.0.1:6379> sadd set2 a d e 
(integer) 3
127.0.0.1:6379> sadd set3 c h j 
(integer) 3
127.0.0.1:6379> sdiff set1 set2 set3 ##求差集,在set1中,同时不在set2,set3中的元素
1) "b"
127.0.0.1:6379> scard set1
(integer) 3
127.0.0.1:6379> sdiffstore set4 set1 set2 set3
(integer) 1
127.0.0.1:6379> smembers set4
1) "b"
127.0.0.1:6379> srandmember set1 0
(empty list or set)
127.0.0.1:6379> srandmember set1 1
1) "c"
127.0.0.1:6379> srandmember set1 2
1) "a"
2) "b"
127.0.0.1:6379> srandmember set1 5 ##返回min(5, 3)个元素,且不重复
1) "c"
2) "a"
3) "b"
127.0.0.1:6379> srandmember set1 -5 ## 返回5个元素,可能重复
1) "a"
2) "b"
3) "c"
4) "c"
5) "c"
127.0.0.1:6379> spop set1
"c"
127.0.0.1:6379> smembers set1
1) "b"
2) "a"
127.0.0.1:6379> smembers set2
1) "d"
2) "a"
3) "e"
127.0.0.1:6379> smove set2 set1 c ##source中不含移动的元素,不操作
(integer) 0
127.0.0.1:6379> smove set2 set1 e ##移动一个元素到另一个集合
(integer) 1
127.0.0.1:6379> smembers set2
1) "d"
2) "a"
127.0.0.1:6379> smembers set1
1) "b"
2) "a"
3) "e"