redis5新增数据类型

news2025/1/16 5:36:32

Bitmaps

  • 概念

    (1) Bitmaps本身不是一种数据类型, 实际上它就是字符串(key-value) , 但是它可以对字符串的位进行操作。

    (2) 可以把Bitmaps想象成一个以位为单位的数组, 数组的每个单元只能存储0和1, 数组的下标在Bitmaps中叫做偏移量。

    image-20210718164525814

  • 常见命令

    • setbit <key> <offset> <value>: 设置Bitmaps中某个偏移量的值
    • getbit<key><offset>获取Bitmaps中某个偏移量的值
    • bitcount <key> [start end] : 统计值为1的数量
    • bitop and/or/not/xor <resultKey> <key>: 对key进行与或非操作结果放入resultKey中
  • 举例

    每个独立用户是否访问过网站存放在Bitmaps中, 将访问的用户记做1, 没有访问的用户记做0, 用偏移量作为用户的id。

    设置键的第offset个位的值(从0算起) , 假设现在有20个用户,userid=1, 6, 11, 15, 19的用户对网站进行了访问, 那么当前Bitmaps初始化结果如图

    img

    • 初始化命令: users:20210718 为key

      image-20210718165144404

    • 获取用户id为1 的用户是否访问过网站 结果为1 访问过

      image-20210718165343442

    • 统计今日的访问量

      image-20210718165738690

  • Bitmaps与set对比

    • 举例

      假设网站有1亿用户, 每天独立访问的用户有5千万, 如果每天用集合类型和Bitmaps分别存储活跃用户可以得到

    数据类型每个用户id占用空间需要存储的用户量全部内存量
    集合类型64位5000000064位*50000000 = 400MB
    Bitmaps1位1000000001位*100000000 = 12.5MB

    set和Bitmaps存储独立用户空间对比

    数据类型一天一个月一年
    集合类型400MB12GB144GB
    Bitmaps12.5MB375MB4.5GB

HyperLogLog

  • 概念

    • ​ 在工作当中,我们经常会遇到与统计相关的功能需求,比如统计网站PV(PageView页面访问量),可以使用Redis的incr、incrby轻松实现。

    • 但像UV(UniqueVisitor,独立访客)、独立IP数、搜索记录数等需要去重和计数的问题如何解决?这种求集合中不重复元素个数的问题称为基数问题。

    • 解决基数问题有很多种方案:

      (1)数据存储在MySQL表中,使用distinct count计算不重复个数

      (2)使用Redis提供的hash、set、bitmaps等数据结构来处理

    • 以上的方案结果精确,但随着数据不断增加,导致占用空间越来越大,对于非常大的数据集是不切实际的。

    • 能否能够降低一定的精度来平衡存储空间?Redis推出了HyperLogLog

    • Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的。

    • 在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。

    • 但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。

    • 什么是基数?

      • 比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。
  • 命令

    • pfadd <key>< element> [element ...] 添加指定元素到 HyperLogLog 中

Geospatial

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/491382.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HIEE300024R4 UAA326A04什么是反馈和前馈控制系统?

​ HIEE300024R4 UAA326A04什么是反馈和前馈控制系统&#xff1f; 反馈控制系统&#xff1a; 反馈系统测量过程中的值并对测量值的变化做出反应。 在传感器的帮助下测量过程的输出&#xff0c;并将传感器值提供给控制器以采取适当的控制措施。控制器将此传感器信号与设定点进行…

人物专辑丨技术服务展计讯风采,助力客户显计讯担当

正所谓&#xff1a;平凡铸就伟大。一切令人赞叹的不凡&#xff0c;都来自于平凡点滴的坚守&#xff1b;一切砥砺前行的坚持&#xff0c;都来自于责任的担当。 在计讯物联高质量发展的进程中&#xff0c;不乏敢于担当、踏实勤恳、爱岗敬业的计讯人。他们扎根岗位&#xff0c;坚…

grafana-report在grafana7中遇到的问题

一、点击之后报错pdf报错&#xff1a;NO image renderer available/installed 查看grafana日志后&#xff0c;有以下报错&#xff1a; Could not render image, no image renderer found/installed. For image rendering support please install the grafana-image-renderer …

ThingsBoard使用jar包单机部署

1、概述 前面一节我讲了如何初始化数据库表结构以及默认的数据。这一节我将讲解如何使用jar包部署。 2、部署 2.1、修改thingsboard.yml配置 上一节我已经讲解了thingsboard.yml中的基础配置,基础的组件配置如何redis、kafka、Cassandra、pg等大家都知道,关键的地方是在于…

Neo4j图数据库的介绍_图数据库结构_节点_关系_属性_数据---Neo4j图数据库工作笔记0001

以前就知道这个了,也见别人用过,在大数据领域有可能会用到所以就看了一下. 其实就是用来,指定数据之间的关系,但是他这个更适合处理,数据之间的大规模的关系 可以看到图数据可以用到上面的这些领域 因为图数据库,更适合处理关系,基于数学中的图论 可以看到,因为如果关系太庞大…

pandas使用教程:pandas resample函数处理时间序列数据

文章目录 时间序列(TimeSeries)执行多个聚合 上采样和填充值通过apply传递自定义功能 DataFrame对象 时间序列(TimeSeries) #创建时间序列数据 rng pd.date_range(1/1/2012, periods300, freqS)ts pd.Series(np.random.randint(0, 500, len(rng)), indexrng) ts2012-01-01 0…

十二、MyBatis分页插件

文章目录 十二、分页插件12.1 分页插件使用步骤12.2 分页插件的使用12.3 测试案例 本人其他相关文章链接 十二、分页插件 12.1 分页插件使用步骤 1. 添加依赖 <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</art…

Java基本数据类型以及包装类型的常量池技术

Java 中的基本数据类型 Java 中有 8 种基本数据类型&#xff0c;分别为&#xff1a; 6 种数字类型&#xff1a; 4 种整数型&#xff1a;byte、short、int、long2 种浮点型&#xff1a;float、double 1 种字符类型&#xff1a;char1 种布尔型&#xff1a;boolean。 这 8 种基本…

Socks5 代理协议:网络安全中的利器

随着网络的普及&#xff0c;网络安全问题已成为各行各业所面临的共同难题。为了保护自己的网络安全&#xff0c;不少人选择使用代理IP&#xff0c;其中 Socks5 代理协议因其安全性、灵活性等优势备受青睐。本文将介绍 Socks5 代理协议及其在网络安全中的作用。 一、什么是 Soc…

安卓手机搭建智能语音客服/通话播音/聊天播音乐技术实现

声明&#xff0c;此项技术需要root支持&#xff0c;如果因为刷机导致手机变砖或其他不可预料的后果请自行解决。 场景 我有一个朋友他是做业务的&#xff0c;主要还是做电销&#xff0c;其实电销相对于以前纪念没那么好做了&#xff08;我自己觉得主要是互联网冲击&#xff0c…

[EIS 2019]EzPOP

[EIS 2019]EzPOP 考点&#xff1a; base64加密&#xff0c;解密的时候按4个的倍数 然后数组里面含有 php代码也可以执行 然后学到了解题思路&#xff0c;逆推然后找各个变量的初始值 <?php error_reporting(0);class A {protected $store;protected $key;protected $expire…

JAVA原生语言开发多学校Saas模式校园管理系统

开发语言&#xff1a;JAVA数据库&#xff1a;MySQL后端框架&#xff1a;Spring boot前端框架&#xff1a;VUE2电子班牌&#xff1a; Android 7.1小程序&#xff1a;原生开发多学校Saas 模式 详细技术栈 前后端分离 1、使用springboot框架Javavue2 2、数据库MySQL5.7 3、移动端…

1.数据库的管理(实验报告)

目录 一﹑实验目的 二﹑实验平台 三﹑实验内容和步骤 四﹑命令(代码)清单 五﹑命令(代码)运行结果 一﹑实验目的 了解SQL Server数据库的逻辑结构和物理结构的特点&#xff1b;掌握使用SQL Server管理平台对数据库进行管理的方法&#xff1b;掌握使用Transact-SQL语句对数…

云原生时代崛起的编程语言Go并发编程实战

文章目录 概述基础理论并发原语协程-Goroutine通道-Channel多路复用-Select通道使用超时-Timeout非阻塞通道操作关闭通道通道迭代 定时器-TimerAndTicker工作池-Worker Pools等待组-WaitGroup原子操作-Atomic互斥锁-Mutex读写互斥锁-RWMutex有状态协程单执行-Once条件-Cond上下…

交通拥堵、安全隐患、能源浪费…数字孪生技术助力城市管理现代化

随着智能城市的不断发展&#xff0c;数字孪生技术也开始在智慧城市的建设中得到了广泛应用。数字孪生作为一种数字化的复制技术&#xff0c;它可以模拟真实世界中的实体和过程。 在城市规划方面&#xff0c;数字孪生可以帮助城市规划师更加直观地了解城市的整体规划和发展趋势&…

Python爬虫常用框架

大家都知道python是一门多岗位编程语言&#xff0c;学习python之后可以从事的岗位有很多&#xff0c;python爬虫便在其中&#xff0c;不过很多人对python不是很了解&#xff0c;所以也不知道python爬虫是什么&#xff0c;接下来小编为大家介绍一下。 Python是一门非常适合开发…

Eureka注册中心及Ribbon的源码跟踪

搭建的思路: 一个Eureka注册中心, 两个微服务, 一个为order-service(订单服务), 一个为user-service(用户服务), 在order-service中需要使用user-service中的方法. 步骤: 搭建 Eureka-server服务, 用于服务的消费者和提供者注册服务向注册中心注册user-service服务向注册中心注…

即时通讯开发商如何选择?

随着即时通讯开发技术进步&#xff0c;人与人之间沟通互动更加便利。同时在企业的营销过程中&#xff0c;即时聊天手机APP为企业与消费者提供了即时互动平台&#xff0c;有效增强营销效果。 企业内部沟通、电商客服沟通都是需要用到即时通讯功能。而现在开发即时通讯功能并不是…

Yolov1 源码讲解 detect.py

讲完了训练部分 接下来是检测部分 惯例看看结构 VOC_CLASS_BGR是不同类别应该用什么颜色画框容易区分&#xff0c;比如A用红色&#xff0c;B用绿色&#xff0c;不容易在途中颜色混在一起 画框框 def visualize_boxes(image_bgr, boxes, class_names, probs, name_bgr_dictNon…

这一篇LiveData掉不掉价(使用+粘性事件解决)

1. 简介 LiveData 是一种可观察的数据存储器类。与常规的可观察类不同&#xff0c;LiveData 具有生命周期感知能力&#xff0c;意指它遵循其他应用组件&#xff08;如 activity、fragment 或 service&#xff09;的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周…