redis 集合操作

SADD : 将元素添加到集合

127.0.0.1:6379> sadd list element [element ...]

  命令返回成功添加的元素数量作为返回值

127.0.0.1:6379> sadd  databases "redis"
(integer) 1

  忽略已存在的元素,因为集合不存储相同的元素

127.0.0.1:6379> sadd  databases "redis"
(integer) 0

  如果有新元素与已存在的旧元素,忽略已存在的元素

127.0.0.1:6379> sadd  databases "redis" "mysql"
(integer) 1

  srem 从集合里移除元素

127.0.0.1:6379> SREM set element [element ...]

  移除元素操作

127.0.0.1:6379> SREM databases "redis"
(integer) 1

   如果给定元素不存在于集合里,那么srem命令会忽略不存在元素,只移除存在的元素 

127.0.0.1:6379> srem databases "memcached"
(integer) 0

  smove :将一个元素熊一个集合移动到另一个集合

127.0.0.1:6379> SMOVE source target element 

  使用smove命令将存在于databases集合的redis元素以及mongodb元素移动到nodes集合里

127.0.0.1:6379> sadd databases "redis" "mongodb"
(integer) 2
127.0.0.1:6379> SMOVE databases nodesql "redis" 
(integer) 1
127.0.0.1:6379> SMOVE databases nodesql "mongodb" 
(integer) 1

  忽略不存在的元素,如果用户想要移动的元素并不存在与原集合,那么smove将放弃执行移动操作,返回0表示失败

127.0.0.1:6379> sadd tr "app" "lpp" "cpp"
(integer) 3
127.0.0.1:6379> sadd tk "aipp" "lipp" "clpp"
(integer) 3
127.0.0.1:6379> SMOVE tr tk "apple" 不存在
(integer) 0
127.0.0.1:6379> SMOVE tr tk "app"
(integer) 1

  smembers :获取集合包含的所以元素

SMEMBERS set 

  获取集合tk里所有元素

127.0.0.1:6379> SMEMBERS tk
1) "app"
2) "aipp"
3) "clpp"
4) "lipp"

  元素的无序排列:因为redis集合以无序的方式存储,并且以smembers命令在获取元素时也不会对元素进行任何排序,所以根据元素添加顺序不同,两个包含相同元素的集合在执行smembers命令时结果也会有所不同

127.0.0.1:6379> sadd redis-1 "apple" "banana" "cherry" "hg"
(integer) 4
127.0.0.1:6379> sadd redis-2  "hg" "banana"  "apple" "cherry"
(integer) 4
127.0.0.1:6379> SMEMBERS redis-1
1) "hg"
2) "cherry"
3) "apple"
4) "banana"
127.0.0.1:6379> SMEMBERS redis-2
1) "cherry"
2) "hg"
3) "apple"
4) "banana"

  scard:获取集合包含元素数量

127.0.0.1:6379> SCARD set 

  查看redis-1 包含元素数量

127.0.0.1:6379> SCARD redis-1
(integer) 4

  sismember:检查给定的元素是否存在于集合里

127.0.0.1:6379> SISMEMBER set element 

    查看测试

127.0.0.1:6379> SMEMBERS databases
1) "Neo4j"
2) "mysql"
3) "redis"
4) "mongodb"
5) "Postgresql"
127.0.0.1:6379> SISMEMBER databases "redis"
(integer) 1
127.0.0.1:6379> SISMEMBER databases "mongodb"
(integer) 1
127.0.0.1:6379> SISMEMBER databases "mysql"
(integer) 1

  检查不存在的元素

127.0.0.1:6379> SISMEMBER databases "oracle"
(integer) 0

  srandmember:随机获取集合里元素,命令不会移除集合里元素

127.0.0.1:6379> SRANDMEMBER databases
"mongodb"
127.0.0.1:6379> SRANDMEMBER databases
"redis"
127.0.0.1:6379> SRANDMEMBER databases
"redis"
127.0.0.1:6379> SRANDMEMBER databases
"redis"

  随机获取指定数量的元素

127.0.0.1:6379> SRANDMEMBER databases 2
1) "Neo4j"
2) "mongodb"
127.0.0.1:6379> SRANDMEMBER databases 3
1) "redis"
2) "mysql"
3) "Neo4j"

  spop 随机从集合移除指定数量元素默认一个元素

127.0.0.1:6379> spop key [count]

  随机移除元素操作

127.0.0.1:6379> spop databases
"mysql"
127.0.0.1:6379> SMEMBERS databases
1) "redis"
2) "Neo4j"
3) "Postgresql"
4) "mongodb"

  sinter sinterstore:对集合进行交集计算

127.0.0.1:6379> sinter set [set set] [key ...]

  创建两个元素,查看交集

127.0.0.1:6379> sadd c1 "a" "b" "c" "d" 
(integer) 4
127.0.0.1:6379> sadd c2 "c" "d" "e" "f"
(integer) 4
127.0.0.1:6379> SINTER c1 c2
1) "d"
2) "c"

  sinterstore 命令可以把给定的集合的交集计算结果存储到指定的键里

127.0.0.1:6379> SINTERSTORE destination_key set [set ...]

  将c1与c2的交集写入c3里

127.0.0.1:6379> SINTERSTORE c3 c1 c2
(integer) 2
127.0.0.1:6379> SMEMBERS c3
1) "d"
2) "c"

  sunion 、sunionstore 集合并执行并集运算

127.0.0.1:6379> SUNION set [set ...] [key 

  对c1与c2进行并集运算

127.0.0.1:6379> SUNION c1 c2
1) "d"
2) "f"
3) "c"
4) "e"
5) "b"
6) "a"

  sunionstore  并集结果存入c4里

127.0.0.1:6379> SUNIONSTORE c4 c1 c2
(integer) 6
127.0.0.1:6379> SMEMBERS c4
1) "d"
2) "f"
3) "c"
4) "e"
5) "b"
6) "a"

  sdiff sdiffstore 对集合进行差集运算

127.0.0.1:6379> SDIFF set [set ...]

  对c1与c2 进行差集运算

127.0.0.1:6379> SDIFF c1 c2
1) "b"
2) "a"

  sdiffstore 把c1与c2的差集运算的结果写进c5里

127.0.0.1:6379> SDIFFSTORE c5 c1 c2
(integer) 2
127.0.0.1:6379> SMEMBERS c5
1) "b"
2) "a"

  

                  

草都可以从石头缝隙中长出来更可况你呢
原文地址:https://www.cnblogs.com/rdchenxi/p/12419516.html