redis 中 Set Hash Zset 是怎么操作的?

命令操作

set

   往set中加入一个zhangsan

127.0.0.1:16379[3]> sadd set zhangsan
(integer) 1

   往set中加入一个zhangsan (返回结果:(integer) 0)被去重了

127.0.0.1:16379[3]> sadd set zhangsan
(integer) 0

   获取 set 中的所有成员

127.0.0.1:16379[3]> SMEMBERS set 
1) "zhangsan"

   往set集合中添加多个值 lisi wangwu zhaoliu

127.0.0.1:16379[3]> sadd set lisi wangwu zhaoliu 
(integer) 3

   获取 set 中的所有成员

127.0.0.1:16379[3]> SMEMBERS set
1) "zhaoliu"
2) "wangwu"
3) "lisi"
4) "zhangsan"

   判断 set集合中是否存在lisi 存在返回1

127.0.0.1:16379[3]> SISMEMBER set lisi
(integer) 1

   判断 set集合中是否存在haha 没有返回0

127.0.0.1:16379[3]> SISMEMBER set haha
(integer) 0

   移除set中的值为zhaoliu的元素

127.0.0.1:16379[3]> SREM set zhaoliu
(integer) 1

   获取所有元素的信息

127.0.0.1:16379[3]> smembers set
1) "wangwu"
2) "lisi"
3) "zhangsan"

   随机获取 set 中的一个元素

127.0.0.1:16379[3]> SRANDMEMBER set
"lisi"

   随机获取 set 中的两个元素

127.0.0.1:16379[3]> SRANDMEMBER set 2
1) "lisi"
2) "wangwu"

   获取set中所有的元素信息

127.0.0.1:16379[3]> SMEMBERS set
1) "wangwu"
2) "lisi"
3) "zhangsan"

   获取(弹出)set 中的元素

127.0.0.1:16379[3]> spop set
"zhangsan"

   获取set中的所有元素

127.0.0.1:16379[3]> SMEMBERS set
1) "wangwu"
2) "lisi"

   获取set中的所有元素
127.0.0.1:16379[3]> SMEMBERS set
1) "wangwu"
2) "lisi"

   将set中的lisi元素移动到myset中

127.0.0.1:16379[3]> SMOVE set myset lisi
(integer) 1

   获取set中的所有元素此时少了一个叫lisi的元素

127.0.0.1:16379[3]> SMEMBERS set
1) "wangwu"

   获取myset中的所有元素此时多了一个叫lisi的元素

127.0.0.1:16379[3]> smembers myset
1) "lisi"

   往collection1 中添加了a b c d e 五个元素

127.0.0.1:16379[3]> sadd collection1 a b c d e
(integer) 5

   往collection2 中添加了b c d f k 五个元素

127.0.0.1:16379[3]> sadd collection2 b c d f k
(integer) 5
127.0.0.1:16379[3]> SMEMBERS collection1
1) "b"
2) "a"
3) "c"
4) "d"
5) "e"
127.0.0.1:16379[3]> SMEMBERS collection2
1) "f"
2) "b"
3) "c"
4) "d"
5) "k"

   比较 collection1 比 collection2 多了哪些元素

127.0.0.1:16379[3]> SDIFF collection1 collection2
1) "a"
2) "e"

   比较 collection2 比 collection1 多了哪些元素

127.0.0.1:16379[3]> SDIFF collection2 collection1
1) "f"
2) "k"

   集合 collection2 与 collection1 取交集

127.0.0.1:16379[3]> SINTER collection1 collection2
1) "b"
2) "d"
3) "c"

   集合 collection2 与 collection1 取并集

127.0.0.1:16379[3]> SUNION collection1 collection2
1) "a"
2) "b"
3) "e"
4) "d"
5) "f"
6) "k"
7) "c"

场景: 微博A用户将所有关注的人放在了一个set的集合中!将它的粉丝也放在了一个集合中
共同关注,共同爱好,二度好友,推荐好友(六度分割理论)

hash

   给hash设置一个key为name值为zhangsan的键值对

127.0.0.1:16379[4]> hset hash name zhangsan
(integer) 1

   获取hash中key为name的值

127.0.0.1:16379[4]> hget hash name
"zhangsan"

   给hash设置一个key为age值为22 与 key为 sex 值为 nan 的两个键值对

127.0.0.1:16379[4]> HSET hash age 22 sex nan
(integer) 2

   批量获取hash 中key 为 name、age、sex的值

127.0.0.1:16379[4]> hmget hash name age sex
1) "zhangsan"
2) "22"
3) "nan"

   获取 hash 中所有的值

127.0.0.1:16379[4]> hgetall hash
1) "name"
2) "zhangsan"
3) "age"
4) "22"
5) "sex"
6) "nan"

   获取 hash 中所有的值

127.0.0.1:16379[4]> hgetall hash
1) "name"
2) "zhangsan"
3) "age"
4) "22"
5) "sex"
6) "nan"

   删除 hash 中key为sex的值

127.0.0.1:16379[4]> hdel hash sex
(integer) 1

   获取 hash 中所有的值

127.0.0.1:16379[4]> hgetall hash
1) "name"
2) "zhangsan"
3) "age"
4) "22"

   获取 hash 中所有的值

127.0.0.1:16379[4]> hgetall hash
1) "name"
2) "zhangsan"
3) "age"
4) "22"

   批量添加往 hash 中添加值

127.0.0.1:16379[4]> hmset hash score 22 grade 5
OK

   获取 hash 中所有的值

127.0.0.1:16379[4]> hgetall hash
1) "name"
2) "zhangsan"
3) "age"
4) "22"
5) "score"
6) "22"
7) "grade"
8) "5"

   获取 hash 的长度

127.0.0.1:16379[4]> hlen hash
(integer) 4

   获取 hash 中所有的值

127.0.0.1:16379[4]> hgetall hash
1) "name"
2) "zhangsan"
3) "age"
4) "22"
5) "score"
6) "22"
7) "grade"
8) "5"

   测试 hash 中 name 键是否存在

127.0.0.1:16379[4]> HEXISTS hash name
(integer) 1

   测试 hash 中 hah 键是否存在

127.0.0.1:16379[4]> HEXISTS hash hah
(integer) 0

   获取 hash 中所有的值

127.0.0.1:16379[4]> hgetall hash
1) "name"
2) "zhangsan"
3) "age"
4) "22"
5) "score"
6) "22"
7) "grade"
8) "5"

   获取 hash 中所有的key值

127.0.0.1:16379[4]> HKEYS hash
1) "name"
2) "age"
3) "score"
4) "grade"

   获取 hash 中所有的value值

127.0.0.1:16379[4]> HVALS hash
1) "zhangsan"
2) "22"
3) "22"
4) "5"

   获取 hash 中所有的值

127.0.0.1:16379[4]> hgetall hash
1) "name"
2) "zhangsan"
3) "age"
4) "22"
5) "score"
6) "22"
7) "grade"
8) "5"

   hash中指定key中的值递增

127.0.0.1:16379[4]> HINCRBY hash age 1
(integer) 23

   hash中指定key中的值递增

127.0.0.1:16379[4]> HINCRBY hash age 1
(integer) 24

   获取hash中指定key的值

127.0.0.1:16379[4]> hget hash age
"24"

   设置hash中指定key的值,没有就创建

127.0.0.1:16379[4]> HSETNX hash fav hiking
(integer) 1

   设置hash中指定key的值,没有就创建(fav 已经存在所以创建失败)

127.0.0.1:16379[4]> HSETNX hash fav hiking
(integer) 0

   获取hash中指定key的值

127.0.0.1:16379[4]> hgetall hash
 1) "name"
 2) "zhangsan"
 3) "age"
 4) "24"
 5) "score"
 6) "22"
 7) "grade"
 8) "5"
 9) "fav"
10) "hiking"

   hash 比string更适合操作对象、存储对象毕竟各适其值

127.0.0.1:16379[4]> hmset user:1001 name zhangsan age 23 fav swing
OK
127.0.0.1:16379[4]> hmget user:1001 name age fav
1) "zhangsan"
2) "23"
3) "swing"

zset

   往set集合中加一个分值为 1 的 zhangsan

127.0.0.1:16379[5]> zadd set 1 zhangsan
(integer) 1

   往set集合中加一个分值为 2 的 lisi

127.0.0.1:16379[5]> zadd set 2 lisi
(integer) 1

   往set集合中加一个分值为 3 的 wangwu

127.0.0.1:16379[5]> zadd set 3 wangwu 
(integer) 1

   获取set中所有的值

127.0.0.1:16379[5]> ZRANGE set 0 -1
1) "zhangsan"
2) "lisi"
3) "wangwu"

   按指定区间内分数高低获取成员,区间的范围是是负无穷到正无穷,分数由高到低

127.0.0.1:16379[5]> ZRANGEBYSCORE set -inf +inf
1) "zhangsan"
2) "lisi"
3) "wangwu"

   按指定区间内分数高低获取成员,区间的范围是是负无穷到正无穷,分数由低到高倒序并且带有分数

127.0.0.1:16379[5]> ZRANGEBYSCORE set -inf +inf withscores
1) "zhangsan"
2) "1"
3) "lisi"
4) "2"
5) "wangwu"
6) "3"

   按指定区间内分数高低获取成员,区间的范围是是负无穷到2(包括2),分数由低到高倒序并且带有分数

127.0.0.1:16379[5]> ZRANGEBYSCORE set -inf 2 withscores
1) "zhangsan"
2) "1"
3) "lisi"
4) "2"

   获取set中所有的成员

127.0.0.1:16379[5]> ZRANGE set 0 -1
1) "zhangsan"
2) "wangwu"

   获取set的长度

127.0.0.1:16379[5]> ZCARD set
(integer) 2

   获取指定set分数区间中的元素个数

127.0.0.1:16379[5]> ZCOUNT set 1 2
(integer) 1

   获取指定set分数区间中的元素个数,该分数没有5到6之间的所以是0

127.0.0.1:16379[5]> ZCOUNT set 5 6
(integer) 0

猜你喜欢

转载自blog.csdn.net/weixin_38071259/article/details/106336813