redis的五种数据类型详细图解

2023-11-07

众所周知,redis有五种数据类型

  1. string(字符串)
  2. lists(列表)
  3. sets(无序的字符串集合)
  4. zsets(有序的字符串集合)
  5. hashs(哈希类型)

一,string(字符串类型)

在Redis中字符串类型的Value最多可以容纳的数据长度是512M

 

二,存储lists类型

在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表 一样,我们可以在其头部(left)和尾部(right)添加新的元素。在插入时,如果该键并不 存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移 除,那么该键也将会被从数据库中删除。List中可以包含的最大元素数量是 4294967295。

 从元素插入和删除的效率视角来看,如果我们是在链表的两头插入或删除元素,这将 会是非常高效的操作,即使链表中已经存储了百万条记录,该操作也可以在常量时间 内完成。然而需要说明的是,如果元素插入或删除操作是作用于链表中间,那将会是 非常低效的。

 

三,sets类型

在Redis中,我们可以将Set类型看作为没有排序的字符集合,和List类型一样,我 们也可以在该类型的数据值上执行添加、删除或判断某一元素是否存在等操作。需要 说明的是,这些操作的时间是常量时间。Set可包含的最大元素数是4294967295。

和List类型不同的是,Set集合中不允许出现重复的元素。和List类型相比,Set类 型在功能上还存在着一个非常重要的特性,即在服务器端完成多个Sets之间的聚合计 算操作,如unions、intersections和differences。由于这些操作均在服务端完成, 因此效率极高,而且也节省了大量的网络IO开销

 

四,sortedset类型

Sorted-Sets和Sets类型极为相似,它们都是字符串的集合,都不允许重复的成员出 现在一个Set中。它们之间的主要差别是Sorted-Sets中的每一个成员都会有一个分 数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。然 而需要额外指出的是,尽管Sorted-Sets中的成员必须是唯一的,但是分数(score) 却是可以重复的。

在Sorted-Set中添加、删除或更新一个成员都是非常快速的操作,其时间复杂度为 集合中成员数量的对数。由于Sorted-Sets中的成员在集合中的位置是有序的,因此, 即便是访问位于集合中部的成员也仍然是非常高效的。事实上,Redis所具有的这一 特征在很多其它类型的数据库中是很难实现的,换句话说,在该点上要想达到和Redis 同样的高效,在其它数据库中进行建模是非常困难的。

例如:游戏排名、微博热点话题等使用场景。

 

五,hash类型

Redis中的Hash类型可以看成具有String Key和String Value的map容器。所 以该类型非常适合于存储值对象的信息。如Username、Password和Age等。如果 Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。每一个Hash 可以存储4294967295个键值对。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

redis的五种数据类型详细图解 的相关文章

  • 如何在多个Lua State(多线程)之间传递数据?

    我在中启动Redis连接池redis lua 通过从 C 调用 我得到了redis lua state 此 Lua 状态全局启动一次 仅在其他线程中启动get从中 当有一个 HTTP 请求 工作线程 时 我需要从redis lua stat
  • redis集群不断打印日志WSA_IO_PENDING

    当我启动redis集群的所有redis服务器时 所有这些服务器不断打印类似WSA IO PENDING clusterWriteDone的日志 9956 03 Feb 18 17 25 044 WSA IO PENDING writing
  • 如何在节点redis客户端上设置读取超时?

    在 github 上我没有看到读取超时的选项 https github com NodeRedis node redis https github com NodeRedis node redis There s connect timeo
  • WSL Redis 遇到系统尚未使用 systemd 作为 init 系统(PID 1)启动。无法操作[已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试遵循本文中讨论的 Redis 安装过程article https www digitalocean com community
  • 库存管理系统的 SQL 与 NoSQL

    我正在开发一个基于 JAVA 的网络应用程序 主要目的是拥有在多个称为渠道的网站上销售的产品的库存 我们将担任所有这些渠道的管理者 我们需要的是 用于管理每个渠道的库存更新的队列 库存表 其中包含每个通道上分配的正确快照 将会话 ID 和其
  • Docker-compose Predis 不通过 PHP 连接

    我正在尝试使用 docker compose 将 PHP 与 redis 连接 docker compose yml version 2 services redis image redis 3 2 2 php image company
  • 通过 StackExchange.Redis 连接到 Redis Servier

    我尝试使用以下方法制作一个测试项目Redis https redis io服务器 通过 Virtual Box 安装在 Linux Ubuntu 虚拟机上 Linux 机器通过 Virtual Box 的桥接适配器与本地网络连接 Virtu
  • SignalR 无法连接到 SSL 上的 Azure Redis

    我目前在 Azure 上托管我的 redis 缓存服务器 并让 signalR 依赖它作为骨干 使用以下内容 GlobalHost DependencyResolver UseRedis 服务器 端口 密码 eventKey 这可以在端口
  • 使用 Redis 命令 incr 和 expire 时的竞争条件

    根据redis文档 http redis io commands incr http redis io commands incr 在段落模式 速率限制器 2 较短的版本代码 value INCR ip IF value 1 THEN EX
  • Node Js:Redis 作业在完成其任务后未完成

    希望你们做得很好 我在我的 Nodejs 项目中实现了 BullMQ Bull 的下一个主要版本 来安排发送电子邮件的作业 例如 发送忘记密码请求的电子邮件 所以 我编写了如下所示的代码 用户服务 await resetPasswordJo
  • Lua中按字符分割字符串

    我有像这样的字符串 ABC DEF 我需要将它们分开 字符并将两个部分分别分配给一个变量 在 Ruby 中 我会这样做 a b ABC DEF split 显然Lua没有这么简单的方法 经过一番挖掘后 我找不到一种简短的方法来实现我所追求的
  • 使用 Sentinels 升级 Redis 的最佳实践?

    我有 3 个 Redis 节点 由 3 个哨兵监视 我进行了搜索 文档似乎不清楚如何最好地升级此类配置 我目前使用的是 3 0 6 版本 我想升级到最新的 5 0 5 我对这方面的程序有几个疑问 升级两个大版本可以吗 我在我们的暂存环境中执
  • Laravel 所有会话 ID 与 Redis 驱动程序

    在我的应用程序中 我希望允许某些用户能够注销除他 她之外的所有其他用户 当会话驱动程序设置为文件时 我已经完成了此功能 但现在我使用 redis 作为会话驱动程序 并且我无法找到任何方法来列出所有当前会话 就像我在文件时所做的那样司机 问题
  • redis - 使用哈希

    我正在使用 redis 为我的 Web 应用程序实现社交流和通知系统 我是 redis 的新手 我对哈希值及其效率有一些疑问 我读过这篇很棒的文章Instagram 帖子 http instagram engineering tumblr
  • 有没有办法让特定的key在集群模式下定位到特定的redis实例上?

    我想让我的多锁位于不同的redis实例上 我发现redission可以指定一个实例来执行命令 但是如果该命令与key相关 则指定的实例会将命令传输到另一个实例 你能给我一些建议吗 你可以 但这并不是微不足道的 首先 Redis 在键中使用大
  • 如何使redis中的“HSET”子键“过期”?

    我需要使 Redis 哈希中所有超过 1 个月的密钥过期 这不可能 https github com antirez redis issues 167 issuecomment 2559040 为了保持 Redis 简单 https git
  • redis dump.rdb / 保存小文件

    Context 我正在使用redis 数据库小于 100 MB 但是 我想进行每日备份 我也在 Ubuntu Server 12 04 上运行 当输入 redis cli save 我不知道 dump rdb 保存到哪里 因为 redis
  • Redis+Docker+Django - 错误 111 连接被拒绝

    我正在尝试使用 Redis 作为使用 Docker Compose 的 Django 项目的 Celery 代理 我无法弄清楚我到底做错了什么 但尽管控制台日志消息告诉我 Redis 正在运行并接受连接 事实上 当我这样做时 docker
  • 创建 C++ Redis 模块 - “不导出 RedisModule_OnLoad() 符号”

    我在加载 Redis 模块时遇到一些问题 我只是复制来自的示例https redis io topics modules intro https redis io topics modules intro 但我把它剥下来了 include
  • Laravel Redis 配置

    我目前正在使用 Laravel 和 Redis 创建一个应用程序 几乎一切都工作正常 我按照文档中的说明扩展了身份验证 用户可以订阅 登录 注销 我可以创建内容 所有内容都存储在 Redis 中 但我有一个问题 我无法运行 php arti

随机推荐

  • 机器学习实战学习笔记(十三)利用SVD简化数据

    PS 该系列数据都可以在图灵社区 点击此链接 中随书下载中下载 如下 1 SVD的应用 奇异值分解 优点 简化数据 去除噪声 提高算法的结果 缺点 数据的转换可能难以理解 适用数据类型 数值型数据 1 1 隐形语义索引 最早的SVD应用之一
  • 并发测试异常[Address already in use: no futher infomation]

    前言 测试的同事反馈接口返回异常 如下 I O error on POST request for 接口地址 Address already in use connect nested exception is java net BindE
  • 动漫短视频在哪下载?3个网站教你快速找到

    动漫作为新兴的朝阳产业 受众群体越来越广 动漫短视频剪辑也越来越多 但很多人都有一个疑惑 动漫短视频在哪下载 素材怎么找呢 今天就给大家介绍一下 01 易撰 首先就是易撰 易撰视频库可以说是全网最全面的视频素材库了 包含了抖音 快手 美拍等
  • Mysql操作

    完成下面的操作 请写出修改表的SQL语句并运行 1 现要新增两个字段 籍贯和邮箱 A native 籍贯 数据类型为20位可变长字符串 放在性别列的后面 B email 邮箱 数据类型为50位可变长字符串 放在最后一列 2 设学生表stud
  • Golang笔记-大小写作用范围

    验证作用范围所使用的目录结构 其中main go内容如下 package main import encoding json fmt practice mulu1 practice mulu2 practice mulu4 1 即使mulu
  • Kubernetes入门学习-十九-网络配置插件flannel-01

    最近学习k8s遇到很多问题 建了一个qq群 153144292 交流devops k8s docker等 Kubernetes的网络模型和网络策略 Kubernetes网络模型和CNI插件 在Kubernetes中设计了一种网络模型 要求无
  • Redhat 设置北京时间

    Redhat 设置北京时间 系统版本 查看当前时间 修改时区 修改时间 系统版本 redhat 版本 6 5 wuxt localhost cat etc redhat release Red Hat Enterprise Linux Se
  • HiBlock社区:区块链链上数据的认知与探索

    跨界知识聚会系列文章 知识是用来分享和传承的 各种会议 论坛 沙龙都是分享知识的绝佳场所 我也有幸作为演讲嘉宾参加了一些国内的大型会议 向大家展示我所做的一些成果 从听众到演讲感觉是不一样的 把知识分享出来 你才能收获更多 关于作者 张丹
  • Pycharm常用快捷键及设置

    Pycharm 一 Pycharm常用快捷键 二 常用设置 1 代码提示忽略大小写敏感 2 滚轮缩放和自动换行 包括编辑栏和控制台 3 字体与代码配色 仅供参考 一 Pycharm常用快捷键 Ctrl 行注释 Ctrl D 复制选定的区域或
  • 【electron】应用在线升级

    流程 1 设置feedUrl 每次登录应用后更新feedUrl 如果需要灰度测试 可以添加uuid的参数 由服务端判断是否命中 注意 feedUrl需要在checkUpdate之前调用 主进程 初始化 private cancellatio
  • U3D客户端框架之 音效管理器 与 Fmod介绍安装导入Unity

    一 Fmod介绍与安装导入Unity 1 Fmod与Unity内置Audio播放器对比 Unity内置的Audio底层使用的是FMOD 但是功能不够齐全 高级一点的功能如混合 Mix 等无法使用 音效管理应该和Unity工程解耦合 这样子可
  • Python中处理异常和错误

    作为一种强大且灵活的编程语言 Python 提供了许多机制来处理程序运行过程中可能出现的异常和错误 本文将详细介绍如何在 Python 中以 优雅 高效 的方式进行异常处理 并提供实用技巧帮助开发者更好地应对各种情况 无论您是初学者还是有经
  • 单相桥式全控整流电路

    单相全控桥式带电阻负载时的电路 带电阻负载的工作情况 电路分析 闸管VT1和VT4组成一对桥臂 VT2和VT3组成另一对桥臂 在u2正半周 即a点电位高于b点电位 若4个晶闸管均不导通 id 0 ud 0 VT1 VT4串联承受电压u2 在
  • linux echo彩色打印

    定义了三个颜色 把打印的内容加载头和尾巴之间即可 pt head green 033 32 1m pt head red 033 31 1m pt head yellow 033 33 1m pt tail 033 0m echo pt h
  • STM32学习笔记-大小端模式详解

    最低有效字节在最前端的方式 小端法 最高有效字节在最前端的方式 大端法 小端模式 Little Endian 小端模式 Little Endian 也称为Intel顺序 最低有效字节 首先存储 例如 int16数据0x0123467在地址单
  • vue3:使用:图片生成二维码并复制

    实现在 vue3 中根据 url 生成一个二维码码 且可以复制 注 复制功能 navigator clipboard write 只能在安全的localhost 这种安全网络下使用 https中需要添加安全证书 且在域名 例 https w
  • 打印二维、多行的PDF-417条形码控件PDF417 Fonts and Encoder

    PDF417 Fonts and Encoder条形码控件使您可以在带有支持TrueType BDF FON SFP PCL laserjet soft PostScript type 1 Binary及PostScript ASCII字体
  • Qt QT_WIDGETS_LIB宏

    如果定义了QT WIDGETS LIB 那么应用程序的对象就是QApplication 如果定义了QT GUI LIB 那么应用程序的对象就是QGuiApplication 否则 应用程序的对象就是QCoreApplication 如果使用
  • 入门机器学习(西瓜书+南瓜书)贝叶斯分类器总结(python代码实现)

    入门机器学习 西瓜书 南瓜书 贝叶斯分类器总结 python代码实现 一 贝叶斯分类器 1 1 通俗理解 先来看两个公式 P A B P
  • redis的五种数据类型详细图解

    众所周知 redis有五种数据类型 string 字符串 lists 列表 sets 无序的字符串集合 zsets 有序的字符串集合 hashs 哈希类型 一 string 字符串类型 在Redis中字符串类型的Value最多可以容纳的数据