Redis的基本数据类型

基本的数据类型包括:
字符串、列表、哈希、集合、有序集合

拓展的数据类型包括:
bitmaps位图
hyperloglog基数估计算法
geo 地理位置
streams 流

字符串

字符串经常用来存储单个值,用户信息、商品信息等或者二进制的数据。

字符串是基于SDS动态字符串来实现的,不仅可以保存二进制数据也可以保存文本数据。

哈希

存储对象或结构化的数据,用户资料、商品属性等。
通过key-value来存储数据。

列表

实现队列或栈功能,如任务队列、消息队列等,通过 LPUSH/RPOP 或 RPUSH/LPOP 操作实现先进先出(FIFO)或后进先出(LIFO)。

时间序列数据的存储,如用户浏览历史、日志记录等,利用列表的有序性。

Set(集合)

(1)使用场景:

存储唯一值集合,如标签系统中的用户标签、社交网络中的关注关系等。

实现交集、并集、差集等集合运算,如共同关注、推荐好友等。

(2)实现方式:

Redis Set 使用整数集合(int set)或哈希表(hashtable)实现。当集合元素全部为整数且范围合适时,使用整数集合以节省空间;否则使用哈希表来保证唯一性和快速增删查操作。

Zset有序集合

排行榜系统,如用户积分排名、热蒙文章等,根据score对成员进行排序。

底层采用跳表和字典相结合的方式实现。通过多级的索引结构实现快速的范围查询和排序。

其他的数据类型还包括

bitmaps 位图

适用于需要对大量二进制进行高效处理的场景,用户签到、活跃用户统计等。

HyperLogLog(基数估计算法)

用于近似统计大量唯一元素的数量,如网站独立访客数、唯一用户 ID 计数等,无需精确计数但对内存占用敏感的场景。

HyperLogLog 是一种概率算法,能在小内存空间内(通常几十到几百字节)提供对大规模数据集基数(不重复元素数量)的估算。Redis 将 HyperLogLog 算法实现为一种数据类型,提供 PFADD、PFCOUNT 等命令,允许用户向 HyperLogLog 结构添加元素,并获取估算的基数,误差率通常在 0.81% 以内,精确计数时不能使用。

Geo(地理位置)

适用于需要对带有地理位置信息的数据进行距离查询、范围查询、附近点查找等操作的场景,如地图服务、LBS 应用、社交网络中基于位置的好友推荐等。

(2)实现方式:

Redis 的 Geo 数据类型基于 ZSet 实现,通过将经纬度信息转换为分值,结合专用的地理空间操作命令(如 GEOADD、GEODIST、GEORADIUS、GEORADIUSBYMEMBER),实现了对地理位置数据的高效管理和查询。用户可以轻松地添加、删除地理位置信息,以及根据给定坐标或距离范围进行查询。

Streams(流)

(1)使用场景:
适用于处理持续追加的事件序列,如消息队列、活动日志、物联网设备数据流等,支持持久化存储、多消费者消费、消息分片等复杂需求。
(2)实现方式:
Redis Streams 是一种逻辑上类似于发布-订阅模式,但具有更强持久化、多消费组、消息回溯等特点的数据类型。每个 Stream 由一系列带有唯一 ID 和元数据(时间戳、字段值等)的消息组成。Redis 提供 XADD、XREAD、XGROUP 等命令,支持客户端以高并发、低延迟的方式生成、消费和管理数据流。

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

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

相关文章

一个简单好用的 C# Easing Animation 缓动动画类库

文章目录 1.类库说明2.使用步骤2.1 创建一个Windows Form 项目2.2 安装类库2.3 编码2.4 效果 3. 扩展方法3.1 MoveTo 动画3.2 使用回调函数的Color动画3.3 属性动画3.4 自定义缓动函数 4.该库支持的内置缓动函数5.代码下载 1.类库说明 App.Animations 类库是一个很精炼、好用的…

DeepSORT(目标跟踪算法)中的计算观测值与状态估计的马氏距离

DeepSORT(目标跟踪算法)中的计算观测值与状态估计的马氏距离 flyfish 在目标跟踪中,使用马氏距离可以帮助判断某个观测值是否与当前的状态估计一致。 gating_distance 是一个方法,用于计算状态分布和观测值之间的门限距离&#…

Django ORM的QuerySet:解锁数据库交互的魔法钥匙

用到此篇文章知识的几篇文章: Django ORM实战:模型字段与元选项配置,以及链式过滤与QF查询详解Django API开发实战:前后端分离、Restful风格与DRF序列化器详解 文章目录 前言一、什么是QuerySet?二、QuerySet 的用途三…

Latex详细教程——图片、表格、公式

一、图片 1、占地一栏普通图片 使用figure环境,[thpb]表示希望在文中占地的优先级,[t] ~ top,顶部;[h] ~ here,当前位置;[p] ~ page of its own,浮动页;[b] ~ bottom,底…

Dell服务器根据GPU温度调整风扇转速

前言 dell服务器自动风扇是根据CPU温度来调速的,我跑AI的时候cpu温度不高但是GPU温度很高导致显卡卡死PVE虚拟机直接挂起无法运行,我看了下也没有基于显卡温度调速的脚本,于是我就自己写了一个 基于ipmi工具 乌班图等linux先安装ipmi apt …

GPT-4o:人工智能新贵的崭露头角

近日,OpenAI 推出了 GPT-4o,这一新一代的人工智能技术引起了广泛的关注和讨论。本文将对 GPT-4o 进行评价,包括与之前版本的对比分析、技术能力以及个人整体感受等方面。 1. 版本间的对比分析 GPT-4o 是 GPT 系列的最新版本,相较…

搭建vauditdemo靶场mysql为NO问题

一、问题 在搭建vauditdemo时,遇到如下显示问题: mysql版本检测为NO 二、解决 查找该方面问题时,并没有找到解决方法 然后换mysql版本换了五六个也没有解决问题 问了AI后给的答复有一条为将mysql改为mysqli 修改保存后解决问题 步骤如…

二分【1】二分查找框架 查找指定元素

目录 二分查找 基本思想 几种情况汇总 一。严格递增序列 1.查找本身 2.查找第一个大于等于自己的 3.查找第一个大于自己的 4.严格递减序列 二。有重复元素 1.取其中第一个出现的 2.取其中最后一个出现的 二分查找 基本思想 几种情况汇总 一。严格递增序列 1.查找本身…

QT 使用opencv 打开usb相机

1.在.pro文件中 添加opencv的头文件与lib 库 INCLUDEPATH D:\opencv\build\install\include LIBS D:\opencv\build\install\x64\mingw\lib\libopencv_*.a LIBS D:\opencv\build\install\x64\mingw\bin\libopencv_*.dll 2. usb相机类的头文件usbCamera.h #ifndef USBCAM…

QNX Hypervisor详细介绍

标签: QNX Hypervisor; Hypervisor; QNX Hypervisor是当前主流的满足车规级的虚拟机产品,这方面高通和QNX高度绑定,“QQ”(Qualcomm+QNX)组合在智能座舱领域占比高达90%以上。 什么是QNX Hypervisor? QNX Hypervisor是由BlackBerry旗下的QNX软件系统公司开发的一种虚…

作业-day-240607

思维导图 C编程 要求: 搭建一个货币的场景,创建一个名为 RMB 的类,该类具有整型私有成员变量 yuan(元)、jiao(角)和 fen(分),并且具有以下功能:…

模板显式、隐式实例化和(偏)特化、具体化的详细分析

最近看了<The C Programing Language>看到了模板的特化&#xff0c;突然想起来<C Primer>上说的显式具体化、隐式具体化、特化、偏特化、具体化等概念弄得头晕脑胀&#xff0c;我在网上了找了好多帖子&#xff0c;才把概念给理清楚。 看着这么多叫法&#xff0c;其…

上位机图像处理和嵌入式模块部署(f407 mcu vs h750)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 在目前工业控制上面&#xff0c;f103和f407是用的最多的两种stm32 mcu。前者频率低一点&#xff0c;功能少一点&#xff0c;一般用在低端的嵌入式设…

【DevOps】路由与路由器详细介绍:原理、功能、类型及应用场景

目录 一、路由详细介绍 1、什么是路由&#xff1f; 2、路由的基本原理 3、 路由协议 静态路由 动态路由 4、 路由表 5、 路由算法 6、路由的优缺点 优点 缺点 7、 路由应用场景 二、路由器详细介绍 1、什么是路由器&#xff1f; 2、 路由器的工作原理 3、路由器…

软考初级网络管理员_02_计算机系统基础知识(硬件)单选题

1.计算机系统中采用()技术执行程序指令时&#xff0c;多条指令执行过程的不同阶段可以同时进行处理。 流水线 云计算 大数据 面向对象 2.当硬盘出现坏道或坏块是&#xff0c;使用哪种方式重构? 全盘重构 局部重构 恢复重构 本地重构 3.传输二进制信号需要()的带宽。…

C语言详解(文件操作)1

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

通过在idea上搭建虚拟hadoop环境使用MapReduce做词频去重

idea上的MapReduce ​ 一般在开发中&#xff0c;若是等到环境搭配好了再进行测试或者统计数据&#xff0c;数据处理等操作&#xff0c;那会很耽误时间&#xff0c;所以一般都是2头跑&#xff0c;1波人去在客户机上搭建环境&#xff0c;1波人通过在idea上搭建虚拟hadoop环境&am…

【Python Cookbook】S02E08 编写多行模式的正则表达式

目录 问题解决方案讨论 问题 我们打算使用正则表达式对一段文本做匹配&#xff0c;但是希望在进行匹配时能够跨越多行。换句话说&#xff0c;正则表达式中 . 可以匹配任意除了换行符的字符&#xff0c;我们如何让他也能够匹配换行符&#xff1f; 解决方案 例如在如下的两个案…

React+TS前台项目实战(五)-- 全局常用组件Link封装+使用Omit定义类型

文章目录 前言Link组件1. 功能分析2. 代码注释说明3. 使用方式 总结 前言 接下来的几篇文章&#xff0c;将主要封装全局常用组件&#xff0c;以便于后续编写页面的简易和维护性的提高。本文将主要讲述跳转组件的封装。 Link组件 1. 功能分析 &#xff08;1&#xff09;国际化…

java期末细节知识整理(三)

1.一个类是多个对象的共性体现 2.一个类可以有多个修饰符 3.类是将数据和方法封装在一起的一种数据结构 4.类和对象是面向对象程序设计方法中最核心的概念 5.在三目运算符flag&#xff1f;x1&#xff1a;x2中&#xff0c;如果x1和x2中有一个是浮点数&#xff0c;那么返回值…