set类型

新的存储需求,存储大量的数据,在查询方面提供更高的效率需要的存储结构。

能够保存大量的数据,高效的内部存储机制,便于查询set类型。

与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的。

1.set类型数据的基本操作

添加 / 修改数据:sadd key member member1

获取数据:smembers key

删除数据:srem key member1

获取集合数据总量:scard key

判断集合中是否包含指定数据:sismember key member

2.set类型数据扩展操作

随机获取集合中指定数量的数据:srandmember key count

随机获取集合中某个数据并将改数据集移除集合:spop key

3.set类型业务场景推荐信息

随机推送热点信息、热点新闻、热卖旅游、应用app推荐、关注推荐等

4.set类型业务场景挖掘用户关系

两个集合的交、并、差集

sinter key key1sunion key key1sdiff key key1

两个集合的交、并、差集并存储到指定集合中

sinterstore destination key1 key2sunionstore destination key1 key2sdiffstore destination key1 key2

案例:我们需要挖掘一个信息的共同好友。例如微信公众号的共同关注好友数量、QQ添加新好友的推荐机制、深度挖掘用户直接的联系

就根据上述案例,我们可以使用差集来实现qq的有可能认识的好友。

5.set类型业务场景 实现网站的PV UV IP的记录

PV直接使用string类型的incr统计即可

UV和IP都是独立不重复的,使用set来操作。

在上边我们知道set有一个特性就是不能重复,我们就可以根据这一点来轻松实现这个功能。然后使用scard key 来统计数量。

至于UV是独立访客,使用本地的cookie来实现就可以,方法一样把cookie传给redis做记录即可

6.set类型的操作配置

##########################################################################
127.0.0.1:6379> sadd myset "hello" # set集合中添加元素

127.0.0.1:6379> sadd myset "sj"

127.0.0.1:6379> sadd myset "loveredis"

127.0.0.1:6379> SMEMBERS myset # 查看指定set的所有值

127.0.0.1:6379> SISMEMBER myset hello # 判断某一个值是不是在set集合中!

127.0.0.1:6379> SISMEMBER myset world

##########################################################################
127.0.0.1:6379> scard myset # 获取set集合中的内容元素个数!

##########################################################################
rem
127.0.0.1:6379> srem myset hello # 移除set集合中的指定元素

127.0.0.1:6379> scard myset

127.0.0.1:6379> SMEMBERS myset

##########################################################################
set 无序不重复集合。抽随机!
127.0.0.1:6379> SMEMBERS myset

127.0.0.1:6379> SRANDMEMBER myset # 随机抽选出一个元素

##########################################################################
删除定的key,随机删除key!
127.0.0.1:6379> SMEMBERS myset

127.0.0.1:6379> spop myset # 随机删除一些set集合中的元素!

127.0.0.1:6379> spop myset

127.0.0.1:6379> SMEMBERS myset

##########################################################################
将一个指定的值,移动到另外一个set集合!
127.0.0.1:6379> sadd myset "hello"

127.0.0.1:6379> sadd myset "world"

127.0.0.1:6379> sadd myset "sj"

127.0.0.1:6379> sadd myset2 "set2"

127.0.0.1:6379> smove myset myset2 "sj" # 将一个指定的值,移动到另外一个set集合!

127.0.0.1:6379> SMEMBERS myset

127.0.0.1:6379> SMEMBERS myset2

##########################################################################
微博,B站,共同关注!(并集)
数字集合类:
- 差集 SDIFF
- 交集
- 并集

127.0.0.1:6379> sadd key1 a b c

127.0.0.1:6379> SADD key2 c d e


127.0.0.1:6379> SDIFF key1 key2 # 差集

127.0.0.1:6379> SINTER key1 key2 # 交集 共同好友就可以这样实现

127.0.0.1:6379> SUNION key1 key2 # 并集

十一、Redis五大数据类型之三Set相关推荐

  1. note.. redis五大数据类型

    redis 五大数据类型使用 nosql介绍,由来 什么是nosql 阿里巴巴的架构 nosql 四大分类 redis入门 概述 redis 安装 (docker) 基础的知识 redis五大数据类型 ...

  2. Redis五大数据类型

    Redis五大数据类型 Redis数据类型 key + Østring Øset Ølist Øhash Øzset Redis五大数据类型 --Key Ø keys * • 查询当前库的所有键 Ø ...

  3. Redis五大数据类型常用命令

    Redis五大数据类型 Redis-Key 1.查看当前数据库的key keys * #返回当前数据库下的所有key 2.设置key set key value 3.获取key的value get k ...

  4. (一)Redis——五大数据类型及基础知识

    一位爱好技术的橘右京的哥哥橘左京 Redis--五大数据类型及基础知识(一) Redis 1.Redis命令 1.1 常用String命令 1.2 常用List命令 1.3 常用Hash命令 1.4 ...

  5. Redis五大数据类型(字符串对象(string)、列表对象(list)、哈希对象(hash)、无序集合(set)和Sorted Set数据类型(zset有序集合))

    Redis五大数据类型 一.String(字符串)数据类型 1.SET/GET/APPEND/STRLEN 2.INCR/DECR/INCRBY/DECRBY 3.GETSET 4. SETEX 5. ...

  6. Redis五大数据类型与使用场景汇总!!(含完整实战案例,建议收藏)

    本文全面讲述了Redis的五大数据类型和使用场景,含完整实战案例,强烈建议收藏!! 大家好,我是冰河~~ 最近面试跳槽的小伙伴有点多,给我反馈的面试情况更是千差万别,不过很多小伙伴反馈说:面试中的大部 ...

  7. 【数据存储】【Redis】第三章: Redis五大数据类型实现原理

    Redis五大数据类型实现原理 对于五大数据类型(String,list,Hash,Set,Zset)实现原理,Redis在底层用到了多种数据结构,通过数据结构来实现键值对,将数据结构创建了一个对象r ...

  8. 【Redis五大数据类型】

    Redis五大数据类型 前言 一.字符串String 1. set / get / del / append / strlen 2. incr / decr / incrby / decrby 3. ...

  9. redis学习-redis五大数据类型

    五大数据类型简介 String(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value. 也就是例子中的k1 v1,k2 v2 s ...

最新文章

  1. linux sftp命令连接数,linux记录sftp命令
  2. 基于Python——实现远程下载sftp文件(只下载.zip文件)
  3. 【转】获取命名空间、类名、方法名
  4. django简单实现文件上传
  5. SCOPE_IDENTITY和@@identity的区别
  6. 详解4种经典的限流算法
  7. 极光实时监听怎么调用_源码分析 Sentinel 实时数据采集实现原理(图文并茂)
  8. 字符串的相关方法 2101 0310
  9. c语言FRA地址自动加一,c – 如何使用c语言在framebuffer中绘制图形?
  10. MySQL的SQL 语句:根据从表记录个数对主表排序
  11. linux dev input使用消失_Linux驱动04 | 启动分析之根文件系统
  12. jq控制div是否展示_jQuery判断一个元素是否可见的方法
  13. linux的vi2编辑相关命令,Linux vi/vim编辑器常用命令与用法总结
  14. Hive行转列的应用之计算公司累加收入
  15. android猴子测试,听话的“猴子”安卓app压力测试
  16. php中thead怎么居中,html thead标签怎么用
  17. 邮件工具-MailUtil(发送邮件)
  18. 3.4 jest使用pug
  19. 中国IT互联网行业线下峰会清单
  20. ios系统苹果手机进行电脑微信双开方法详细教程

热门文章

  1. oracle导出对象和数据,浅析Oracle对象和数据的导入导出
  2. php配置设置,PHP设置配置文件的方法
  3. mllib逻辑回归 spark_Spark架构详解——分布式流计算内存批处理迭代运算框架
  4. c51单片机时钟c语言程序,89c51 C语言单片机 时钟程序
  5. Java8 Optional 最佳实践
  6. 赏金$10000的GitHub漏洞
  7. php5.5 mysql密码无法_php – Mysql无法连接 – 访问被拒绝(使用密码是)
  8. python添加时间戳_Python 给某个文件名添加时间戳的方法
  9. st 串口烧写工具 芯片_STM32芯片的几种烧写方式简介
  10. 帝国cms会员充值交易推广分润系统的界面实现与开发记录