redis常用五种数据类型----set类型的基本操作

亦凉 2023-02-24 11:26 97阅读 0赞
  • set无序列表

  • 基本操作

    127.0.0.1:6379> sadd myset a b c d e f g //向myset集合中添加这些元素 返回数量
    (integer) 7
    127.0.0.1:6379> smembers myset //查看所有的元素
    1) “a”
    2) “b”
    3) “c”
    4) “d”
    5) “f”
    6) “g”
    7) “e”
    127.0.0.1:6379> scard myset //查看myset集合的元素总数
    (integer) 7
    127.0.0.1:6379> srandmember key
    (nil)
    127.0.0.1:6379> srandmember myset //随机从myset集合中获取一个元素但是不删除原有的元素 可以用作抽奖功能
    “e”
    127.0.0.1:6379> smembers myset
    1) “a”
    2) “b”
    3) “c”
    4) “d”
    5) “f”
    6) “g”
    7) “e”
    127.0.0.1:6379> spop myset //随机从myset集合中获取一个元素,删除原有的元素 可以用作抽奖功能
    “b”
    127.0.0.1:6379> smembers myset
    1) “a”
    2) “c”
    3) “d”
    4) “f”
    5) “g”
    6) “e”
    127.0.0.1:6379> srem myset d f //删除指定的元素
    (integer) 2
    127.0.0.1:6379> smembers myset
    1) “a”
    2) “c”
    3) “g”
    4) “e”
    127.0.0.1:6379> sismember myset a //判断‘a’ 是否在这个set中存在
    (integer) 1 //存在
    127.0.0.1:6379> sismember myset 1
    (integer) 0 //不存在

  • 应用场景

  1. 微博点赞
  2. 签到
  3. 打卡
  4. 商品标签

思路:以一条微博,签到的记录(可能是一张纸),打卡的记录(也可能是一张纸)作为set 的key 例如:weibo

  1. 如果这个微博被别人点赞了,就使用 sadd weibo user1 user2 加入这个集合
  2. 使用srem weibo user1 user2 取消点赞
  3. 判断这个人是否点赞:sismembers weibo user1 user2
  4. 点赞的所有用户列表: smembers weibo
  5. 点赞的总数:scard myset

其他的同理

  • 差集,交集,并集

    127.0.0.1:6379> sadd set1 1 2 3 4 5 6
    (integer) 6
    127.0.0.1:6379> sadd set2 5 6 7 8 9 0
    (integer) 6
    127.0.0.1:6379> sdiff set1 set2 //set1 对 set2 取差集 set2不变
    1) “1”
    2) “2”
    3) “3”
    4) “4”
    127.0.0.1:6379> sdiff set2 set1 //set2 对 set1 取差集 set2不变
    1) “0”
    2) “7”
    3) “8”
    4) “9”
    127.0.0.1:6379> sinter set1 set2 //交集
    1) “5”
    2) “6”
    127.0.0.1:6379> sunion set1 set2 //并集
    1) “0”
    2) “1”
    3) “2”
    4) “3”
    5) “4”
    6) “5”
    7) “6”
    8) “7”
    9) “8”
    10) “9”

  • 应用场景

  1. 商品筛选
  2. 用户关注 互相关注 可能认识的人

发表评论

表情:
评论列表 (有 0 条评论,97人围观)

还没有评论,来说两句吧...

相关阅读