Redis 数据结构空间要求

2023-12-28

redis中排序集和列表的空间有什么区别?我的猜测是,排序集是某种平衡二叉树,列表是链表。这意味着除了我为每个值编码的三个值(键、分数、值)之外,尽管我会将链表的分数和值混合在一起,但开销是链表需要跟踪一个另一个节点,二叉树需要跟踪两个,因此使用排序集的空间开销是 O(N)。

如果我的值和分数都是长整型,并且指向其他节点的指针也是长整型,那么在 64 位计算机上,单个节点的空间开销似乎从 3 个长整型变成了 4 个长整型,即 33%空间增加。

这是真的?


这比你的估计要多得多。假设未使用 ziplist(即您有大量项目)。

Redis 列表是一个经典的双链表:每个项目有 3 个指针(上一个、下一个、值)。

排序集是一个字典加上一个跳跃列表。在字典中,项目也将用 3 个指针存储(key、value、next)。跳跃列表内存占用的评估更复杂:每个节点需要 1 个双精度数(分数)、2 个指针(obj、向后),再加上 n 对(指针、跨度值),其中 n 介于 1 到 32 之间。大多数项目仅需要 1 个或 2 对情侣。

换句话说,当它不表示为 ziplist 时,排序集是迄今为止开销最大的 Redis 数据结构。与列表相比,内存开销超过200%(即3倍)。

注意:评估 Redis 内存消耗的最佳方法是尝试使用伪数据构建一个大列表或排序集,并使用 INFO 获取内存占用量。

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

Redis 数据结构空间要求 的相关文章

  • 如何设置 Celery 以通过 ssl 与 Azure Redis 实例对话

    使用 的伟大答案 如何在microsoft azure上的django项目中配置celery redis https stackoverflow com questions 39616701 how to configure celery
  • 库存管理系统的 SQL 与 NoSQL

    我正在开发一个基于 JAVA 的网络应用程序 主要目的是拥有在多个称为渠道的网站上销售的产品的库存 我们将担任所有这些渠道的管理者 我们需要的是 用于管理每个渠道的库存更新的队列 库存表 其中包含每个通道上分配的正确快照 将会话 ID 和其
  • 是否有可嵌入的 Java 替代 Redis?

    根据这个线程 https stackoverflow com questions 3047010 best redis library for java 如果我想从Java中使用Redis Jedis是最好的选择 然而 我想知道是否有任何库
  • Docker-compose Predis 不通过 PHP 连接

    我正在尝试使用 docker compose 将 PHP 与 redis 连接 docker compose yml version 2 services redis image redis 3 2 2 php image company
  • 如果另一个键中的计数器低于零,则从集合中原子删除一个项目?

    雷迪斯2 0 3 在我的 Redis DB 中 我有一组项目 每个项目都有一个与其关联的计数器 MULTI SADD items set foo INCRBY items foo 10000 EXEC 新项目会以随机间隔添加到集合中 当用户
  • redis-cli 重定向到 127.0.0.1

    我在PC1上启动Redis集群 然后在PC2上连接它 当需要重定向到另一个集群节点时 它会显示Redirected to slot 7785 located at 127 0 0 1 但应该显示Redirected to slot 7785
  • Redis INCRBY 有限制

    我想知道是否有一种方法可以通过我的应用程序的单次往返在 Redis 中执行此操作 对于给定的键K 其可能值V是范围内的任意整数 A B 基本上 它有上限和下限 When an INCRBY or DECRBY发出命令 例如INCRBY ke
  • 如何使 Java 中的自定义泛型类型链表排序?

    我正在用 java 编写自己的泛型链表 而不是使用 java 集合链表 链表的add方法由以下代码组成 public void add T item int position Node
  • 如何批量删除Redis中数十万个带有特殊字符的key

    我们有一个包含数十万个 Redis 键的列表 其中包含各种特殊字符 我们希望批量删除它们 对于这个问题上的类似问题 有一些很好的答案 如何使用 Redis 自动删除与模式匹配的键 https stackoverflow com questi
  • 如何将 ActionController::Live 与 Resque + Redis 一起使用(用于聊天应用程序)

    我正在尝试为我的 Rails 应用程序构建聊天功能 我在用ActionController Live Puma Resque Redis为了这 所以基本上在这种情况下 redissubscribe方法正在后台运行 使用resque 到目前为
  • Caffeine Expiry 中如何设置多个过期标准?

    我正在使用 Caffeine v2 8 5 我想创建一个具有可变到期时间的缓存 基于 值的创建 更新以及 该值的最后一次访问 读取 无论先发生什么都应该触发该条目的删除 缓存将成为三层值解析的一部分 The key is present i
  • 如何测试我的 Redis 缓存是否正常工作?

    我已经安装了 django redis cache 和 redis py 我遵循了 Django 的缓存文档 据我所知 以下设置就是我所需要的 但我如何判断它是否正常工作 设置 py CACHES default BACKEND redis
  • Redis SYNC 套接字上的错误情况:连接被拒绝

    在我的 django 应用程序中使用 celery 和 redis 一切都工作正常 直到我遇到了问题 redis 文件的位置已更改 redis 无法访问它们 经过查找 原来这是由于网络随机攻击造成的 需要添加confg 我添加文件后 一段时
  • 在 C# 中创建循环链表?

    在 C 中创建循环链表的最佳方法是什么 我应该从 LinkedList 集合中派生它吗 我计划使用这个链接列表创建一个简单的地址簿来存储我的联系人 这将是一个糟糕的地址簿 但我不在乎 因为我将是唯一使用它的人 我主要只是想创建关键链接列表
  • 如何在Redis中从hmset()切换到hset()?

    我收到弃用警告 即 Redis hmset 已弃用 请改用 Redis hset 但是 hset 采用第三个参数 我不知道是什么name应该是 info users 10 timestamp datetime utcnow strftime
  • Redis Cluster 与 Pub/Sub 中的 ZeroMQ,用于水平扩展的分布式系统

    如果我要设计一个巨大的分布式系统 其吞吐量应随系统中的订阅者数量和通道数量线性扩展 哪个会更好 1 Redis集群 仅适用于Redis 3 0 alpha 如果是集群模式 您可以在一个节点上发布并在另一个完全不同的节点上订阅 消息将传播并到
  • 2 个具有共享 Redis 依赖的 Helm Chart

    目前 我有 2 个 Helm Charts Chart A 和 Chart B Chart A 和 Chart B 对 Redis 实例具有相同的依赖关系 如Chart yaml file dependencies name redis v
  • 有没有办法让特定的key在集群模式下定位到特定的redis实例上?

    我想让我的多锁位于不同的redis实例上 我发现redission可以指定一个实例来执行命令 但是如果该命令与key相关 则指定的实例会将命令传输到另一个实例 你能给我一些建议吗 你可以 但这并不是微不足道的 首先 Redis 在键中使用大
  • 使用 Celery 通过 Gevent 进行实时、同步的外部 API 查询

    我正在开发一个 Web 应用程序 该应用程序将接收用户的请求 并且必须调用许多外部 API 来编写对该请求的答案 这可以直接从主 Web 线程使用 gevent 之类的东西来扇出请求来完成 或者 我在想 我可以将传入的请求放入队列中 并使用
  • 为什么Redis中没有有序的hashmap?

    Redis 数据类型 http redis io topics data types包括排序集 http redis io topics data types intro sorted sets以及其他用于键值存储的必要数据结构 但我想知道

随机推荐

  • 当我的应用程序关闭时,如何处理通知操作?

    问题概要 我正在编写一个 iOS 应用程序 它发送提醒通知 让用户通过 x callback url 运行其他应用程序 如果应用程序位于前台或后台 我的一切都可以完美运行 但当我的应用程序关闭时 它就无法运行 当我的应用程序关闭时 通知也会
  • 如何在 Xamarin 中重用相同的视图? XAML

    所以我得到了这段代码 我需要在或多或少的所有页面上重复使用 但是我有点厌倦了更改一个页面并且必须在 10 个或更多地方做同样的事情 有没有更好的方法做这个 使用 Xamarin Forms 也许可以使用自定义控制器或使用标记扩展在堆栈布局内
  • 使用 ISO V2 Coated 等颜色配置文件将 CMYK 颜色转换为 RGB?

    我知道这个问题之前已经以多种不同的方式提出过 但似乎没有一个与我的问题相关 我想转换一个CMYK准确地着色RGB使用颜色配置文件 例如ISO Coated V2 我想这样做 因为简单的数学转换会导致明亮的颜色无法在CMYK色彩空间 理想情况
  • 在 JSON 请求中发送图像

    我在用着JSON with REST用于使用 Web 服务的 api 现在我还需要根据请求发送图像 是否可以 如果是 我需要在客户端 服务器端进行哪些更改 在我的Java代码中 我应该如何发送图像内容 是否需要单独设置内容类型 执行此操作的
  • Python:无需 OpenCV 即可访问相机

    同志们 我想用 Python 从笔记本电脑摄像头捕获图像 目前所有迹象都指向 OpenCV 问题是 OpenCV 的安装是一场噩梦 而且每次您在新系统上重新安装代码时 这个噩梦都会再次发生 有没有更轻量级的方法在Python中捕获相机数据
  • Rails Paperclip S3 重命名数千个文件?

    我正在尝试重命名 s3 中的许多文件 更改当前的回形针has attached file path from stuff id updated at style extension to stuff id counter style ext
  • 为什么我的工具输出会覆盖自身以及如何修复它?

    这个问题的目的是要成为一个典范 https meta stackoverflow com questions 291992它涵盖了各种各样的问题 其答案归结为 你有 DOS 行结尾被输入到 Unix 工具中 任何有相关问题的人都应该清楚地解
  • 有没有办法将 gmpxx.h 与 c++98 一起使用?

    由于我的项目 我需要使用 c 98 和 gmpxx h 但即使对于一个简单的项目 它也不起作用 include
  • Chrome DevTools:SASS 源文件未保存在磁盘上

    我按照 Google 提供的说明设置源映射 https developers google com chrome developer tools docs css preprocessors https developers google
  • Unity错误:UnityEngine.Component'不包含“velocity”的定义

    我对 C 很陌生 所以如果这是显而易见的 请原谅我 我正在按照中的步骤操作本教程 http www instructables com id Make A 2D Infinite Runner with Unity step6 The Ro
  • 折叠表达式和函数名称查找

    我正在学习 C 17 中的折叠表达式 我有以下代码 include
  • 是否可以设置当CPU写入特定地址时中断的中断?

    当写入特定地址时是否可以使x86 cpu中断 我想要一个硬件机制来监视某些地址的变化 我想知道在写入特定地址时是否可以使x86 cpu中断 有可能的 您可以设置调试寄存器之一 DR0 to DR4 到你想要监控的地址 然后在中配置相应的标志
  • 使用 NSSortDescriptor 通过 Core Data 对内部版本号进行排序

    我正在尝试使用NSSortDescriptor使用 Core Data 对内部版本号 软件版本 NSStrings 进行排序 内部版本号实际上只是 NSString 但似乎很难做到这一点 我猜测是因为小数点有多个且不规则 例如 我想对以下内
  • scipy 优化最小化——并行化选项

    当使用 L BFGS B 方法运行 scipy Optimizeminimum 时 我发现在某些计算机上 它使用全部 8 个 cpu 核心 参见照片 1 在其他计算机上它使用 8 个核心中的 4 个 参见照片 2 而在其他计算机上 它使用
  • 如何对哈希引用切片进行求和?

    我正在尝试获取哈希引用切片的总和 但失败了 usr bin env perl use strict use warnings FATAL gt all use feature say use autodie all use List Uti
  • help() 在 Python 中哪里可以找到信息?

    我发现内置help 最近它打印了模块 函数 方法 类等的一些信息 但是它到底在哪里找到它显示的信息呢 Python 文档 https docs python org 2 library functions html help不要对此给出任何
  • 使用 guid 主键忽略 LINQ to SQL 实体列名称属性

    我正在使用 LINQ to SQL SQL Server 2005 SP3 x64 处理一个简单的实体类 Table Name TBL REGISTRATION public sealed class Registration IDataE
  • scala 范围与大型集合上的列表性能

    我对 10 000 000 个元素运行了一组性能基准测试 我发现每次实现的结果都有很大差异 任何人都可以解释为什么创建 Range ByOne 会产生比简单的基元数组更好的性能 但将相同的范围转换为列表会导致比最坏情况场景更差的性能 创建
  • Windows CE 上的 C# .NET 3.5 CF,更改 DataGrid 中的行背景颜色

    我正在使用 C NET 3 5 CF 为 Windows CE 进行开发 我正在处理数据网格 需要知道如何更改数据网格上行的背景颜色 提前致谢 你必须手动绘制它 这是一篇博客文章 http blogs msdn com b priozers
  • Redis 数据结构空间要求

    redis中排序集和列表的空间有什么区别 我的猜测是 排序集是某种平衡二叉树 列表是链表 这意味着除了我为每个值编码的三个值 键 分数 值 之外 尽管我会将链表的分数和值混合在一起 但开销是链表需要跟踪一个另一个节点 二叉树需要跟踪两个 因