当前位置: 首页 > news >正文

redis的set集合的编码方式以及应用场景

与其是说set集合的编码方式,更通俗易懂的说法就是redis会根据set集合存的元素的类型和个数来决定set是以什么样子的形式存在,主要有两种:intset,hashtable;如果set存的都是整数,且个数少于redis的配置文件中配置的个数,那么set就会优化这些元素的存储方式,使他们占的内存更少,更节约内存;相反,如果个数大于配置的个数,或者是包含字符串,那么就会以hashtable的形式编码,能够更快的找到元素,实现更快的增删改查;具体我们可以来看几张图,

首先你可以在配置文件中看到个数配置的是512,我改成10,然后我们再来看看效果(修改配置一定要重启redis)

从上图可以看到,当key只有 1-9 9个数字的时候,编码类型还是intset,再插入一个10,还是intset,但是在插入11,个数大于配置的10个的时候,就变成了hashtable;从上面的现象也可以看出来,redis会根据配置的参数来调整set的编码方式;其实我不建议记这个数字没,因为从上面的操作就可以看出来,我们是可以改变这个参数的,我们只需要知道这个逻辑和原理就可以了;至于在实际的业务场景中,我们往往要考虑配置的数字能否提高我们的效率,简单来说要结合实际的业务来调整配置文件中的数字以达到最好的,最快的效果;

可以再来看一张图:

当集合中的元素都是整数,且个数少于配置的大小的话,就会以intset的编码方式,一但插入一个字符串,就会以hashtable的编码方式;

接下来介绍set的一些实际的应用场景:

1.用set来存储用户的“标签”

        这个标签指的我们通过分析用户的一些常有的行为,给这个用户打上一些属性或者性格,比如性别,爱好,个性等等,通过分析的用户的行为,得出用户的画像,以及用户的特征,然后我们就可以投其所好的给他推荐一个产品,视频等等,这种事情有好处也有坏处,坏处就是窥探用户的隐私嘛,但是实际生活每一个公司都有在收集用户的一些行为,从而给用户推荐更好更合适他的产品等等,也算是有好处,就比如淘宝,你经常搜衣服,那么你的淘宝肯定展示更多的就是衣服,你经常搜吃的,那么展示的肯定就是吃的,还比如视频软件,如果你经常刷国际新闻,那肯定会更多的给你推荐国际新闻,如果你更新看正能量视频,肯定多多给你推正能量视频;也是一个好处,能让用户经常看到自己喜欢的,喜欢吃的,但是也有坏处:“信息茧房”,也就是往往你能看到的都是算法给你推荐的,算法想让你看的,有些消息你就看不到,刷不到;

        通过给用户“标签”呢,别忘记了我们的set集合之间是可以做交并差集的,那么我们就可以拿不同的用户的标签来做对比,输出一样的,输出不一样的,如果是一样的,我们可以设法促进他们交流,比如都喜欢一个东西,那就可以促进消费嘛,这方面有益的是交友网站等等;

2、计算共同好友

3、统计UV

        先解释两个概念,PV指的是page view,就是一个页面被访问的次数,一个用户可以访问很多次,有时候我们可能只需要访问量,但是有时候我们就需要统计有多少个用户访问了,这时候就可以使用UV了,UV指的是user view,就是有多少个不同的用户访问,利用的正好就是set的去重效果,如果当前第一次访问,UV存的数字就+1,PV+1,如果当前用户不是第一次访问,那就只是PV+1,这样就可以很好的统计访问量,还可以对各个时间段的访问量做统计分析结果

http://www.dtcms.com/a/399895.html

相关文章:

  • 【MySQL初阶】03-常见的数据类型
  • CPU调用频率偏高 原因调查
  • Nest 中的数据库集成、JWT身份认证与任务调度全解析
  • 中小型企业网站建设与管理设计制作软件
  • 常德网站建设套餐报价怎么制作公司网页教程
  • 音频基础知识
  • 如何在网上建立自己的网站自助建站信息网
  • 网站域名找回密码 用户名景区网站的建设公司
  • HTML应用指南:利用GET请求获取全国奥迪授权经销商门店位置信息
  • golang基础语法(三)常量、指针、别名、关键字、运算符、字符串类型转换
  • 普定县建设局网站河北seo平台
  • dify-随笔
  • 免费开店的平台有哪些标题优化方法
  • seo顾问服务公司站长怎么做软文网站
  • 【JNA】JAVA使用JNA调用C++ dll文件(3)编译Linux版本.so文件
  • MyBatis 操作数据库(⼊⻔)
  • [baka编程]初入C++,如何理解新概念——类和对象
  • 竞价网站做推广一款app是如何制作出来的
  • 北京建设银行网站广东官网网站建设平台
  • 淘宝客怎么在网站做推广网站每年续费费用
  • Pyside6 + QML - 多线程01 - QThread 基础(子线程执行耗时任务)
  • 农产品应该建设哪个网站屏幕分辨率 网站开发
  • 摄影作品展示网站flash全站源码山东住建部和城乡建设官网
  • 购物网站功能模块图使用div建设的网站
  • Python爬虫实战:获取上海石油天然气交易中心2025年液化天然气交易数据并做分析
  • springboot项目添加请求url及请求入参日志
  • Spring XML 配置简介
  • 阿里云虚拟主机如何上传网站国外flash网站
  • NXP - 安装后的MCUXpresso IDE里面有所有的支持包,不用另外去下载
  • 公司网站域名更改怎么做做美团旅游网站多少钱