十一、Redis五大数据类型之三Set
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相关推荐
- note.. redis五大数据类型
redis 五大数据类型使用 nosql介绍,由来 什么是nosql 阿里巴巴的架构 nosql 四大分类 redis入门 概述 redis 安装 (docker) 基础的知识 redis五大数据类型 ...
- Redis五大数据类型
Redis五大数据类型 Redis数据类型 key + Østring Øset Ølist Øhash Øzset Redis五大数据类型 --Key Ø keys * • 查询当前库的所有键 Ø ...
- Redis五大数据类型常用命令
Redis五大数据类型 Redis-Key 1.查看当前数据库的key keys * #返回当前数据库下的所有key 2.设置key set key value 3.获取key的value get k ...
- (一)Redis——五大数据类型及基础知识
一位爱好技术的橘右京的哥哥橘左京 Redis--五大数据类型及基础知识(一) Redis 1.Redis命令 1.1 常用String命令 1.2 常用List命令 1.3 常用Hash命令 1.4 ...
- 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. ...
- Redis五大数据类型与使用场景汇总!!(含完整实战案例,建议收藏)
本文全面讲述了Redis的五大数据类型和使用场景,含完整实战案例,强烈建议收藏!! 大家好,我是冰河~~ 最近面试跳槽的小伙伴有点多,给我反馈的面试情况更是千差万别,不过很多小伙伴反馈说:面试中的大部 ...
- 【数据存储】【Redis】第三章: Redis五大数据类型实现原理
Redis五大数据类型实现原理 对于五大数据类型(String,list,Hash,Set,Zset)实现原理,Redis在底层用到了多种数据结构,通过数据结构来实现键值对,将数据结构创建了一个对象r ...
- 【Redis五大数据类型】
Redis五大数据类型 前言 一.字符串String 1. set / get / del / append / strlen 2. incr / decr / incrby / decrby 3. ...
- redis学习-redis五大数据类型
五大数据类型简介 String(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value. 也就是例子中的k1 v1,k2 v2 s ...
最新文章
- linux sftp命令连接数,linux记录sftp命令
- 基于Python——实现远程下载sftp文件(只下载.zip文件)
- 【转】获取命名空间、类名、方法名
- django简单实现文件上传
- SCOPE_IDENTITY和@@identity的区别
- 详解4种经典的限流算法
- 极光实时监听怎么调用_源码分析 Sentinel 实时数据采集实现原理(图文并茂)
- 字符串的相关方法 2101 0310
- c语言FRA地址自动加一,c – 如何使用c语言在framebuffer中绘制图形?
- MySQL的SQL 语句:根据从表记录个数对主表排序
- linux dev input使用消失_Linux驱动04 | 启动分析之根文件系统
- jq控制div是否展示_jQuery判断一个元素是否可见的方法
- linux的vi2编辑相关命令,Linux vi/vim编辑器常用命令与用法总结
- Hive行转列的应用之计算公司累加收入
- android猴子测试,听话的“猴子”安卓app压力测试
- php中thead怎么居中,html thead标签怎么用
- 邮件工具-MailUtil(发送邮件)
- 3.4 jest使用pug
- 中国IT互联网行业线下峰会清单
- ios系统苹果手机进行电脑微信双开方法详细教程
热门文章
- oracle导出对象和数据,浅析Oracle对象和数据的导入导出
- php配置设置,PHP设置配置文件的方法
- mllib逻辑回归 spark_Spark架构详解——分布式流计算内存批处理迭代运算框架
- c51单片机时钟c语言程序,89c51 C语言单片机 时钟程序
- Java8 Optional 最佳实践
- 赏金$10000的GitHub漏洞
- php5.5 mysql密码无法_php – Mysql无法连接 – 访问被拒绝(使用密码是)
- python添加时间戳_Python 给某个文件名添加时间戳的方法
- st 串口烧写工具 芯片_STM32芯片的几种烧写方式简介
- 帝国cms会员充值交易推广分润系统的界面实现与开发记录