(免费领取红包封面)【Redis 系列】redis 学习四,set 集合,hash 哈希,zset 有序集合初步认知

文末免费领取红包封面哦,总共 2000 个 ,先到先得
set 集合 (免费领取红包封面)【Redis 系列】redis 学习四,set 集合,hash 哈希,zset 有序集合初步认知
文章图片

set 集合里面的数据是不能重读的

  • SADD key member [member ...]
向 set 集合中添加元素
  • SMEMBERS key
查看集合中的所有元素
  • SISMEMBER key member
查看某一个数据是否在集合中
  • SCARD key
查看集合数据的个数,也就是集合的长度
  • SREM key member [member ...]
移除集合中指定的元素
127.0.0.1:6379> sadd myset "hello" (integer) 1 127.0.0.1:6379> sadd myset "wolrd" "xiaomotong" (integer) 2 127.0.0.1:6379> SMEMBERS myset 1) "wolrd" 2) "xiaomotong" 3) "hello" 127.0.0.1:6379> SISMEMBER myset hello (integer) 1 127.0.0.1:6379> SCARD myset (integer) 3 127.0.0.1:6379> SREM myset wolrd (integer) 1 127.0.0.1:6379> SMEMBERS myset 1) "xiaomotong" 2) "hello"

  • SRANDMEMBER key [count]
随机获取集合里面的数据,可以指定个数
127.0.0.1:6379> sadd myset "v1" "v2" "v3" "v4" (integer) 4 127.0.0.1:6379> SMEMBERS myset 1) "v4" 2) "xiaomotong" 3) "v1" 4) "v2" 5) "hello" 6) "v3" 127.0.0.1:6379> SRANDMEMBER myset "v2" 127.0.0.1:6379> SRANDMEMBER myset "xiaomotong" 127.0.0.1:6379> SRANDMEMBER myset 2 1) "v4" 2) "v1" 127.0.0.1:6379> 127.0.0.1:6379> SRANDMEMBER myset 2 1) "xiaomotong" 2) "v1"

  • SPOP key [count]
随机删除集合中的任意元素
127.0.0.1:6379> SMEMBERS myset 1) "v4" 2) "xiaomotong" 3) "v1" 4) "v2" 5) "hello" 6) "v3" 127.0.0.1:6379> SPOP myset "v2" 127.0.0.1:6379> SMEMBERS myset 1) "v4" 2) "xiaomotong" 3) "v1" 4) "hello" 5) "v3" 127.0.0.1:6379> SPOP myset "v4" 127.0.0.1:6379> SMEMBERS myset 1) "xiaomotong" 2) "v1" 3) "hello" 4) "v3"

  • SMOVE source destination member
从指定的集合中取出一个元素,放到另外一个集合中
127.0.0.1:6379> SMEMBERS myset 1) "xiaomotong" 2) "v1" 3) "hello" 4) "v3" 127.0.0.1:6379> SMEMBERS myset 1) "xiaomotong" 2) "v1" 3) "hello" 4) "v3" 127.0.0.1:6379> SMOVE myset newset v1 (integer) 1 127.0.0.1:6379> SMEMBERS newset 1) "v1" 127.0.0.1:6379> SMEMBERS myset 1) "xiaomotong" 2) "hello" 3) "v3"

  • SUNION key [key ...]
取并集,对两个集合取并集
  • SINTER key [key ...]
取交集,对两个集合取交集
127.0.0.1:6379> SMEMBERS myset 1) "xiaomotong" 2) "hello" 3) "v3" 127.0.0.1:6379> sadd newset v3 (integer) 1 127.0.0.1:6379> sadd newset v6 v9 (integer) 2 127.0.0.1:6379> SUNION myset newset 1) "v3" 2) "hello" 3) "xiaomotong" 4) "v1" 5) "v6" 6) "v9" 127.0.0.1:6379> SINTER myset newset 1) "v3" 127.0.0.1:6379>

set 应用场景可以有,多个用户的共同关注,好友推荐,共同的粉丝,功能的爱好等等
hash 哈希 (免费领取红包封面)【Redis 系列】redis 学习四,set 集合,hash 哈希,zset 有序集合初步认知
文章图片

Map 集合,key-map,此时 key-value 是一个集合,本质上和 string 类型没有啥区别,还是一个简单的 key-value 形式
  • HSET key field value [field value ...] / HMSET key field value [field value ...]
在 hash key 中添加 1 个或者多个 key-value
  • HGET key field
获取 hash 里面的一个 key 对应的 value
  • HMGET key field [field ...]
获取 hash 里面的多个 key 对应的 value
  • HGETALL key
获取 hash 里面所有的 键值对
127.0.0.1:6379> hset myhash name xiaomotong age 12 hobby play (integer) 3 127.0.0.1:6379> hget myhash name "xiaomotong" 127.0.0.1:6379> hmget myhash name age 1) "xiaomotong" 2) "12" 127.0.0.1:6379> hgetall myhash 1) "name" 2) "xiaomotong" 3) "age" 4) "12" 5) "hobby" 6) "play"

  • HDEL key field [field ...]
【(免费领取红包封面)【Redis 系列】redis 学习四,set 集合,hash 哈希,zset 有序集合初步认知】删除 hash 里面的 key,一个或者多个
127.0.0.1:6379> HSET myhash k1 v1 k2 v2 k3 v3 (integer) 3 127.0.0.1:6379> hgetall (error) ERR wrong number of arguments for 'hgetall' command 127.0.0.1:6379> hgetall myhash 1) "age" 2) "12" 3) "hobby" 4) "play" 5) "k1" 6) "v1" 7) "k2" 8) "v2" 9) "k3" 10) "v3" 127.0.0.1:6379> HDEL myhash k1 k2 (integer) 2 127.0.0.1:6379> HDEL myhash name (integer) 1 127.0.0.1:6379> hgetall myhash 1) "age" 2) "12" 3) "hobby" 4) "play" 5) "k3" 6) "v3"

  • HLEN key
获取 hash 的长度,也就是 key-value 的对数
127.0.0.1:6379> HLEN myhash (integer) 3

  • HINCRBY key field increment
在集合中的某个 key 上增加值,若值是正数,则是加,若值是负数则是减
  • HSETNX key field value
向 hash 中加入键值对,若不存在则添加,存在则添加失败
127.0.0.1:6379> hset myhash age 12 (integer) 1 127.0.0.1:6379> HINCRBY myhash age 2 (integer) 14 127.0.0.1:6379> HINCRBY myhash age -1 (integer) 13 127.0.0.1:6379> HSETNX myhash name xiaozhu (integer) 1 127.0.0.1:6379> HSETNX myhash name xiaopangzi (integer) 0 127.0.0.1:6379> hgetall myhash 1) "age" 2) "13" 3) "name" 4) "xiaopangzi"

hash 的应用场景有,经常变更数据的地方,尤其是一些用户的信息,经常变动的信息
hash 更适合对象的存储,string 更加适合字符串的存储
zset 有序集合 (免费领取红包封面)【Redis 系列】redis 学习四,set 集合,hash 哈希,zset 有序集合初步认知
文章图片

zset 也是集合,只是在 set 的基础上加上了一个值
  • ZADD key [NX|XX] [GT|LT] [CH] [INCR] score member [score member ...]
向有序集合中添加 分数 和 值,可以添加多个
  • ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
按照分数的顺序排序,-inf 为负无穷,+inf 为正无穷
  • ZRANGE key min max [BYSCORE|BYLEX] [REV] [LIMIT offset count] [WITHSCORES]
查看有序集合里面的所有的值
127.0.0.1:6379> ZADD myage 10 xiaoming 8 xiaohong 19 xiaozhu (integer) 3 127.0.0.1:6379> ZRANGEBYSCORE myage 0 -1 (empty array) 127.0.0.1:6379> ZRANGEBYSCORE myage -inf +inf 1) "xiaohong" 2) "xiaoming" 3) "xiaozhu" 127.0.0.1:6379> ZRANGEBYSCORE myage -inf +inf withscores 1) "xiaohong" 2) "8" 3) "xiaoming" 4) "10" 5) "xiaozhu" 6) "19" 127.0.0.1:6379> ZRANGEBYSCORE myage -inf 10 1) "xiaohong" 2) "xiaoming" 127.0.0.1:6379> ZRANGE myage 0 -1 1) "xiaohong" 2) "xiaoming" 3) "xiaozhu"

  • ZREM key member [member ...]
删除有序集合里面的数据
127.0.0.1:6379> ZREM myage xiaoming (integer) 1 127.0.0.1:6379> ZRANGEBYSCORE myage -inf +inf withscores 1) "xiaohong" 2) "8" 3) "xiaozhu" 4) "19"

  • ZREVRANGE key start stop [WITHSCORES]
对有序集合从大到小排序
127.0.0.1:6379> ZADD myage 7 xiaohe 17 xiaoliu 14 huhu (integer) 3 127.0.0.1:6379> ZRANGE myage 0 -1 1) "xiaohe" 2) "xiaohong" 3) "huhu" 4) "xiaoliu" 5) "xiaozhu" 127.0.0.1:6379> ZRANGEBYSCORE myage -1 20 1) "xiaohe" 2) "xiaohong" 3) "huhu" 4) "xiaoliu" 5) "xiaozhu" 127.0.0.1:6379> ZRANGEBYSCORE myage -1 20 withscores 1) "xiaohe" 2) "7" 3) "xiaohong" 4) "8" 5) "huhu" 6) "14" 7) "xiaoliu" 8) "17" 9) "xiaozhu" 10) "19" 127.0.0.1:6379> ZREVRANGE myage 0 -1 1) "xiaozhu" 2) "xiaoliu" 3) "huhu" 4) "xiaohong" 5) "xiaohe"

其余的 api 我们可以到 redis 官网上去进行学习和实践,可以查看 redis 官方的中文文档,http://www.redis.cn/
zset 的应用场景有:
set 排序,存储班级成绩信息,工资信息等等,用于排序和筛选的
带有权重的数据或者消息,排行榜的实现等等
免费领取红包封面哦,总共 2000 个 ,先到先得
(免费领取红包封面)【Redis 系列】redis 学习四,set 集合,hash 哈希,zset 有序集合初步认知
文章图片

欢迎点赞,关注,收藏 朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力
(免费领取红包封面)【Redis 系列】redis 学习四,set 集合,hash 哈希,zset 有序集合初步认知
文章图片

好了,本次就到这里
技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。
我是小魔童哪吒,欢迎点赞关注收藏,下次见~

    推荐阅读