Redis有哪些数据类型?

2023-11-18

它主要提供了5种数据类型:字符串(string)、哈希(hash)、列表(list)、集合(set)、有序集合(zset)。Redis还提供了Bitmap、HyperLogLog、Geo类型,但这些类型都是基于上述核心数据类型实现的。5.0版本中,Redis新增加了Streams数据类型,它是一个功能强大的、支持多播的、可持久化的消息队列。

1. string可以存储字符串、数字和二进制数据,除了值可以是String以外,所有的键也可以是string,string最大可以存储大小为512M的数据。

2. list保证数据线性有序且元素可重复,它支持lpush、blpush、rpop、brpop等操作,可以当作简单的消息队列使用,一个list最多可以存储2^32-1个元素。

3. hash的值本身也是一个键值对结构,最多能存储2^32-1个元素。

4. set是无序不可重复的,它支持多个set求交集、并集、差集,适合实现共同关注之类的需求,一个set最多可以存储2^32-1个元素。

5. zset是有序不可重复的,它通过给每个元素设置一个分数来作为排序的依据,一个zset最多可以存储2^32-1个元素。

加分回答

    每种类型支持多个编码,每一种编码采取一个特殊的结构来实现,各类数据结构内部的编码及结构:

1. string:编码分为int、raw、embstr。int底层实现为long,当数据为整数型并且可以用long类型表示时可以用long存储。embstr底层实现为占一块内存的SDS结构,当数据为长度不超过32字节的字符串时,选择以此结构连续存储元数据和值。raw底层实现为占两块内存的SDS,用于存储长度超过32字节的字符串数据,此时会在两块内存中分别存储元数据和值。

2. list:编码分为ziplist、linkedlist、quicklist(3.2以前版本没有quicklist)。ziplist底层实现为压缩列表,当元素数量小于512且所有元素长度都小于64字节时,使用这种结构来存储。linkedlist底层实现为双端链表,当数据不符合ziplist条件时,使用这种结构存储。3.2版本之后list采用quicklist的快速列表结构来代替前两种。

3. hash:编码分为ziplist、hashtable两种。其中ziplist底层实现为压缩列表,当键值对数量小于512,并且所有的键值长度都小于64字节时使用这种结构进行存储。hashtable底层实现为字典,当不符合压缩列表存储条件时,使用字典进行存储。

4. set:编码分为inset、hashtable。intset底层实现为整数集合,当所有元素都是整数值且数量不超过512个时使用该结构存储,否则使用字典结构存储。

5. zset:编码分为ziplist、skiplist。当元素数量小于128,并且每个元素长度都小于64字节时,使用ziplist压缩列表结构存储,否则使用skiplist的字典+跳表的结构存储。

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

Redis有哪些数据类型? 的相关文章

  • 在 Java 中克隆对象 [3 个问题]

    这样做会调用Asub的clone方法吗 或者Asub深度克隆是否正确 如果没有的话 有没有办法通过这种方法对Asub进行深度克隆呢 abstract class Top extends TopMost protected Object cl
  • Mockito:如何通过模拟测试我的服务?

    我是模拟测试新手 我想测试我的服务方法CorrectionService correctPerson Long personId 实现尚未编写 但这就是它将执行的操作 CorrectionService将调用一个方法AddressDAO这将
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • 如何在java中将一个数组列表替换为另一个不同大小的数组列表

    我有两个大小不同的数组列表 如何从此替换 ArrayList
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 在接口中使用默认方法是否违反接口隔离原则?

    我正在学习 SOLID 原则 ISP 指出 客户端不应被迫依赖于他们所使用的接口 不使用 在接口中使用默认方法是否违反了这个原则 我见过类似的问题 但我在这里发布了一个示例 以便更清楚地了解我的示例是否违反了 ISP 假设我有这个例子 pu
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • 在 junit 测试中获取 javax.lang.model.element.Element 类

    我想测试我的实用程序类 ElementUtils 但我不知道如何将类作为元素获取 在 AnnotationProcessors 中 我使用以下代码获取元素 Set
  • 像 Java 这样的静态类型语言中动态方法解析背后的原因是什么

    我对 Java 中引用变量的动态 静态类型和动态方法解析的概念有点困惑 考虑 public class Types Override public boolean equals Object obj System out println i
  • 如何对不同的参数类型使用相同的java方法?

    我的问题 我有 2 个已定义的记录 创建对象请求 更新对象请求 必须通过实用方法进行验证 由于这两个对象具有相同的字段 因此可以对这两种类型应用相同的验证方法 现在我只是使用两种方法进行重载 但它很冗长 public record Crea
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • 为什么 Java 8 不允许非公共默认方法?

    让我们举个例子 public interface Testerface default public String example return Hello public class Tester implements Testerface
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • 我如何在java中读取二进制数据文件

    因此 我正在为学校做一个项目 我需要读取二进制数据文件并使用它来生成角色的统计数据 例如力量和智慧 它的设置是让前 8 位组成一个统计数据 我想知道执行此操作的实际语法是什么 是不是就像读文本文件一样 这样 File file new Fi
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 使用 CXF-RS 组件时,为什么我们使用 而不是普通的

    作为后续这个问题 https stackoverflow com questions 20598199 对于如何正确使用CXF RS组件我还是有点困惑 我很困惑为什么我们需要
  • 如何将双精度/浮点四舍五入为二进制精度?

    我正在编写对浮点数执行计算的代码的测试 不出所料 结果很少是准确的 我想在计算结果和预期结果之间设置一个容差 我已经证实 在实践中 使用双精度 在对最后两位有效小数进行四舍五入后 结果始终是正确的 但是usually四舍五入最后一位小数后
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • 全网最详细中英文ChatGPT-GPT-4示例文档-语句情绪分类从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

    从0到1快速入门语句情绪分类应用场景 Introduce 简介 setting 设置 Prompt 提示 Sample response 回复样本 API request 接口请求 python接口请求示例 node js接口请求示例 cu
  • android从一个应用跳转到另一个应用

    获取launcher中的应用列表 Intent intent new Intent intent setAction Intent ACTION MAIN intent addCategory Intent CATEGORY LAUNCHE
  • 奇异谱分解轴承故障诊断代码编写

    答 我可以为您提供一些建议 以帮助您编写奇异谱分解轴承故障诊断代码 1 首先 要确定故障类型 以便确定诊断策略 2 然后 可以使用多种故障诊断技术 包括奇异谱分析 以及其他故障诊断技术 3 为了更好地掌握故障特征 可以使用相关的轴承数据库
  • 最近在学动态规划,很有意思的算法(1)拿金币

    问题描述 有一个N x N的方格 每一个格子都有一些金币 只要站在格子里就能拿到里面的金币 你站在最左上角的格子里 每次可以从一个格子走到它右边或下边的格子里 请问如何走才能拿到最多的金币 输入格式 第一行输入一个正整数n 以下n行描述该方
  • 代码扫描工具对比

    1 概述 随着网络的飞速发展 各种网络应用不断成熟 各种开发技术层出不穷 上网已经成为人们日常生活中的一个重要组成部分 在享受互联网带来的各种方便之处的同时 安全问题也变得越来越重要 黑客 病毒 木马等不断攻击着各种网站 如何保证网站的安全
  • asm:常见指令大全

    常见指令大全 算数指令 INC 指令 DEC 指令 ADD 指令 SUB指令 MUL指令 IMUL指令 DIV指令 IDIV指令 逻辑指令 AND指令 OR指令 XOR 指令 TEST指令 NOT指令 交换指令 xchg 比较指令 CMP指
  • MySQL(二)——基本操作

    MySQL操作 数据库操作 创建数据库 列出 MySQL数据库列表 使用数据库 判断当前所处的数据库 删除数据库 数据库表操作 数据库中的所有表 创建数据表 查询表结构 查询指定表的建表语句 修改表名 删除表单 删除该表并重新再创建 格式化
  • VUE锚点跳转增加滑动效果

    首先我通过直接的锚点跳转是实现不了滑动效果 所以首先实现锚点的跳转效果 先给点击的地方 设置一个点击事件 a 跳转 a 然后是被跳转的地方添加 class industry
  • 只需6行代码教你使用Spire.Doc在Java中将 Word 转为 Tiff

    Spire Doc for Java 是一款专业的Java Word组件 开发人员使用它可以轻松地将Word文档创建 读取 编辑 转换和打印等功能集成到自己的Java应用程序中 本文介绍如何使用Spire Doc for Java将Word
  • linux:ubuntu命令行扩容

    参考 ubuntu 20 04 逻辑卷 ext4 文件系统扩容 mob604757006a49的技术博客 51CTO博客 总结 准备步骤 链接里没有说明 我参考了其他的帖子增加的一步 1 关闭虚拟机 右键虚拟机 选择 设置 2 在虚拟机设置
  • android 富文本框架_史上最全 Appium 自动化测试从入门到框架实战精华学习笔记(二)

    本文为霍格沃兹测试学院学员学习笔记 进阶学习文末加群 本系列文章汇总了从 Appium 自动化测试从基础到框架高级实战中 所涉及到的方方面面的知识点精华内容 如下所示 希望对大家快速总结和复习有所帮助 Appium 自动化测试从基础到框架实
  • python网络安全论文题目_计算机科学与技术专业毕业论文参考题目.doc

    感谢你的欣赏 计算机科学与技术专业 毕业论文参考题目 一 论文参考题目 基于定位和在线绘图的签到考勤系统的设计与实现 基于 ASP NET 技术的校园网络自助报修系统的设计与实现 基于 HTML5 的互动抽取系统的设计与实现 基于 Web
  • React的State Hook用法详解

    一 State Hook是啥 State Hook 就是指 useState 这个特殊函数 让你不用编写class 就可以使用state特性 换言之就是让 函数组件 拥有 state 特性 对数据进行动态更新 二 class中的state
  • RHCE(chrony服务器)

    chrony服务器 chrony服务器是一个开源自由的网络时间协议NTP的客户端和服务器的软件 他能让计算机保持系统时钟和时钟服务器保持同步 让计算机保持精确的时间 chrony也可以作为服务端软件为其他计算机提供时间同步服务 chrony
  • 输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序

    例 输入为18时 输出为3 4 5 6 5 6 7 include
  • Tomcat 配置 闪退 catalina.bat start

    过年的时候配置好的Tomcat 今天一用竟然启动不了 我晕 java home catalina base catalina home 全部是原来的配置 没有修改过 为什么不能用了那 遇到的问题如下 1 启动Tomcat在cmd中输入 ca
  • SpringBoot整合Mybatis注解实战(一)-- 插入数据

    1 数据库数据表的创建 1 首先 在本地数据库中创建一个新数据库 再此命名为test mybatis 1 创建一个数据表user 创建脚本如下 user表创建脚本 CREATE TABLE user id int 11 unsigned N
  • unity期末大作业 搬运东西过河 益智游戏

    unity期末大作业 搬运东西过河 益智游戏 详细情况如下动态图 点我下载 https download csdn net download weixin 43474701 75859840
  • 从“星空”主题绘画系统出发寻求绘画的可能性

    引言 对于绘画的定义 众说纷纭 百度词条上的绘画是这样的 绘画 是指用笔 板刷 刀 墨 颜料等工具材料 在纸 纺织物 木板 墙壁等平面 二度空间 上塑造形象的艺术形式 2016年吕澎在 论绘画 中说 知识与感觉是评估绘画的两个基本出发点 而
  • Redis有哪些数据类型?

    它主要提供了5种数据类型 字符串 string 哈希 hash 列表 list 集合 set 有序集合 zset Redis还提供了Bitmap HyperLogLog Geo类型 但这些类型都是基于上述核心数据类型实现的 5 0版本中 R