专栏首页晨曦破晓の家Redis的各种数据类型实践-Set

Redis的各种数据类型实践-Set

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。 Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

Set常用操作

SADD  key  member  [member ...]//往集合key中存入元素,元素存在则忽略,若key不存在则新建
SREM  key  member  [member ...]//从集合key中删除元素
SMEMBERS  key //获取集合key中所有元素
SCARD  key//获取集合key的元素个数
SISMEMBER  key  member//判断member元素是否存在于集合key中
SRANDMEMBER  key  [count]//从集合key中选出count个元素,元素不从key中删除
SPOP  key  [count]//从集合key中选出count个元素,元素从key中删除

Set 运算操作

SINTER key [key ...] //交集运算
SINTERSTORE destination key [key ..]//将交集结果存入新集合destination中
SUNION key [key ..] //并集运算
SUNIONSTORE destination key [key ...]//将并集结果存入新集合destination中
SDIFF key [key ...] //差集运算
SDIFFSTORE destination key [key ...]//将差集结果存入新集合destination中

应用场景

1、抽奖程序

想必大家都用过微信里的抽奖小程序吧,如下图,我们可以点击立即参与进行抽奖,还可以查看所有参与人员,最后就是开奖的功能,一共三个关键点

我们看一下这三个关键点用set数据类型怎么实现:

1) 点击参与抽奖,则将用户id用户加入集合

SADD key {userlD}

2)查看参与抽奖所有用户

SMEMBERS key 3)抽取count名中奖者

SRANDMEMBER key [count]//返回但不从set中剔除 SPOP key [count]//返回并剔除

如果设置了一等奖二等奖三等奖...,并且每人只能得一种,则可以用SPOP key count

image

2、微信微博点赞,收藏,标签

比如你发了一条朋友圈有人点赞

  1. 点赞 点赞就把点赞这个人的ID加到这个点赞的集合中

SADD like:{消息ID} {用户ID}

  1. 取消点赞 从集合中移除用户ID

SREM like:{消息ID} {用户ID}

  1. 检查用户是否点过赞

SISMEMBER like:{消息ID} {用户ID}

  1. 获取点赞的用户列表

SMEMBERS like:{消息ID}

  1. 获取点赞用户数

SCARD like:{消息ID}

image

Set集合运算操作的应用场景

基于Redis set集合提供的丰富的命令,我们可以对集合轻松的实现交并差的运算。例如,现有集合set1,set12,set3,元素如下:

set1:{a,b,c} set2:{a,c,e} set3:{c,d,f} 对集合进行交、并、差的运算

SINTER set1 set2 set3 //交集--> { c } SUNION set1 set2 set3 //并集--> { a,b,c,d,e,f } SDIFF set1 set2 set3 //差集--> { b } 通过这些基本操作我们看可以实现什么样的业务需求。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Redis的各种数据类型实践--String字符串

    Redis作为一款NoSQL内存数据库,其丰富的数据类型、简单易用的命令、单机可达10万的高并发(官方数据),从面世以来就深受广大用户的喜爱。Redis的五种数...

    用户4464623
  • Redis的各种数据类型实践-ZSet

    我们都知道微博热点,新闻热榜,投票排行榜等都有一个排名的概念,如下图百度热榜,展示的是实时的点击量比较高的新闻(假设这些新闻的ID为1001-1010),每个新...

    用户4464623
  • Redis的各种数据类型实践---List结构

    Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

    用户4464623
  • Redis基础

    Redis(全称:Remote Dictionary Server 远程字典服务)是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、...

    GH
  • Switch XCI转NSP工具 - 4NXCI下载

    命令用不习惯的可以下载GUI的版本,文件命名大致为4nxci-v4.03_GUI.zip

    前端博客 : alili.tech
  • redis学习(二十一)

    这里列出了一些String常用命令,我们看一下这些String类型的这些命令可以应用到哪些场景。

    崔笑颜
  • 深入浅出 Vue 中的 key 值

    前几天我写了一篇文章,sortable.js——Vue 数据更新问题 ,当时自己只是从数据的强制刷新角度去分析,而且并没找到真正的“元凶”。

    GopalFeng
  • Redis学习笔记 -- 2

    Redis 字符串数据类型的相关命令用于管理 redis 字符串值,基本语法如下:

    用户1637228
  • Redis常用命令整理

    端碗吹水
  • Redis系列(十一)redis命令全集

    总的来说,Redis 是一个基于内存的高性能的键值型数据库,也就是常说的 NoSQL, 可以用来作为数据库或者缓存。并且支持多种数据结构,包括字符串,散列,列表...

    呼延十

扫码关注云+社区

领取腾讯云代金券