首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何正确计算散列值?

如何正确计算散列值?
EN

Stack Overflow用户
提问于 2019-06-05 03:40:53
回答 1查看 2K关注 0票数 2

我的问题示例:HMSET myhash field1 value1 field2 value2和my散列只有这两个字段。

主要问题是如何计算hash-max-ziplist-value,使我的散列不会超过以压缩格式维护散列的值,从而将内存使用量降到最低。

非常感谢“凯文·克里斯托弗·亨利”对他的详细解释、帮助和时间。由于我的英语能力有限,我将在这里总结凯文的回答。如果我理解错了,请纠正我。

(1)为了满足hash-max-ziplist-value,我需要计算最大(field1value1field2value2)。假设value1的大小最大。然后,我只需要确保value1的大小不超过hash-max-ziplist-value

(2)要计算value1,只需计算大小的字节数即可。因为hash-max-ziplist-value是任何压缩之前字符串值的字节数。

(3)为了计算value1的字节数,有很多种方法,其中之一是:首先,如果没有,则将value1转换为UTF8编码。其次,使用客户端语言检查它的长度。因为UTF8编码字符串的长度是大小的字节数。(例如:utf8.encode(value1).length)。

原始邮政

例如,HMSET myhash field1 value1 field2 value2

  • 首先,我想澄清hash-max-ziplist-entries的真正含义。

上面的例子是一个条目还是两个条目,因为它有两个字段?

  • hash-max-ziplist-value是什么?的大小,以字节为单位

(a) MEMORY USAGE myhash

(b) field1value1field2value2的总和

(c) value1value2的总和。

(d) max(value1value2)?

(e)最大(field1+value1field2+value2)

  • 我不知道如何计算我的哈希值来匹配hash-max-ziplist-valuehash-max-ziplist-value是字节的大小吗?那是utf-8编码的字符串长度吗?在redis中是否有用于此计算的现有命令?

非常感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-05 05:08:47

这些值在redis.conf文件以及内存优化文档中都有简要描述。

当哈希有少量的条目时,使用内存高效的数据结构进行编码,并且最大条目不超过给定的阈值。可以使用以下指令配置这些阈值。散列-最大值-ziplist-条目512 散列-最大值-ziplist-值64

使用这些默认值作为示例,如果哈希包含512或更少的条目,且每个条目为64字节或更小,则哈希将使用ziplist进行编码。

尽管文档没有确切说明哈希条目的大小是如何计算的,但是查看源代码表明字段名和值都必须小于或等于阈值。您应该能够通过计算二进制字符串的长度(以字节为单位)来确定大小。

为了回答你的一些具体问题:

上面的例子是一个条目还是两个条目,因为它有两个字段?

二。

hash-max-ziplist-value是什么?

使用您的术语,这将是max(field1, value1, field2, value2)

那是utf-8编码的字符串计算吗?

Redis处理二进制字符串。这取决于您(或您的客户)决定使用什么编码。

有什么简单的方法来计算hash-max-ziplist-value的myhash值(以字节为单位)?在redis中是否存在用于此计算的命令?

据我所知,并不是这样,但是值的二进制字符串表示形式的长度应该大致正确。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56459786

复制
相关文章
go 中 struct 是否可以比较?
今天来水一篇,最近比较忙,一直没有时间写 go 相关的,今天从一个小问题入手,来说说 struct 的比较问题。
LinkinStar
2022/09/01
8400
让点击链接上的元素不触发链接的跳转
最近有个做招聘网站的客户提出了个修改要求,要求报名列表上的某个元素可点击,点击后可以录取这个人。 这不是日了个狗了嘛,现在的列表项的每项是用a标签包着的,并且是多处调用这里,所以不能将a标签改成其它。 不过也得满足不是。 经过一番查找,找到一个方法:阻止冒泡事件
jwj
2022/05/18
1.1K0
onbeforeunload事件被a链接触发的问题
onbeforeunload本身并非W3C DOM-Event标准事件,只不过在很多时候国内的流氓做法就是离开页面,直接弹出收藏本网页的提示(虽然我很讨厌这种做法,但事实上很多公司一直都在这样默默地强奸用户…)
meteoric
2018/11/16
1.9K0
PHP 判断是否 URL 链接
正则 <?php function is_url($url){ $r = "/http[s]?:\/\/[\w.]+[\w\/]*[\w.]*\??[\w=&\+\%]*/is"; i
你的明明呐丶
2022/06/27
3.5K0
从Django的Turotial中可以学到什么?
我自己在实现代码的过程中发现这个新手指导基本上就算是Django项目开发的一个缩影了。你完全可以做完它之后继续跟着它的思路走。从这个Tutorials中我们可以学到哪些东西呢?我自己总结了一下。
the5fire
2019/02/28
8530
C#校验Email(电子邮件)地址是否合法
这个C#函数用于校验给定的Email地址是否合法,只针对用于提供的Email地址的格式,不对其是否真实存在进行校验。
用户7108768
2021/11/02
8310
Angular 文档中的修改链接是从哪里改的
aio\tools\transforms\templates\lib\githubLinks.html
HoneyMoose
2019/05/15
1.2K0
Angular 文档中的修改链接是从哪里改的
判断数组中任意数据累加是否可以得到aim
给你一个数组arr,和一个整数aim。 如果可以任意选择arr中的数字,能不能累加得到aim,返回true或者false
名字是乱打的
2022/05/13
3700
Java中是否直接可以使用enum进行传输
我们在进行传输的时候 会有一些状态值,如Status为1代表删除,为0代表失败或者怎么样的。只传输一个)0或者1过去给第三方(此处不包括给前端),如果没有契约第三方会不认识你这个是什么意思,那我们在平时写业务逻辑的时候使用枚举很轻易就知道了什么状态什么值。所以我们在构建DTO对象的时候里面放一个枚举来表示。
袁新栋-jeff.yuan
2020/08/26
3.9K0
Angular 文档中的修改链接是从哪里改的 原
aio\tools\transforms\templates\lib\githubLinks.html
HoneyMoose
2019/05/17
1.2K0
Angular 文档中的修改链接是从哪里改的
                                                                            原
mybatis的mapper文件中的一个标签是否可以写多条SQL语句?是否存在事物?
这样默认是不能实现mybatis的mapper文件中的一个标签可以写多条SQL语句的,会报异常:
趣学程序-shaofeer
2020/05/10
2.8K0
Linux中的链接文件_软链接和硬链接
一、链接文件介绍 Linux操作系统中的“链接文件”分为硬链接(hard link)和软链接(symbolic link)。两种链接的本质区别在于inode。以下是详细介绍: 硬链接:当系统要读取一个文件时,会先读inode信息,然后再根据inode中的信息到块领域将数据取出来。而硬链接是直接再建立一个inode链接到文件放置的块领域,即进行硬连接时该文件内容没有任何变化,只是增加了一个指向这个文件的inode,并不会额外占用磁盘空间。硬链接有两个限制: 不能跨文件系统,因为不同的文件系统有不同的inode
Zoctopus
2018/06/04
6.6K0
从补丁追溯漏洞触发路径
查看github中的补丁信息Fixed chunk size parsing. · nginx/nginx@818807d (github.com)如下:
FB客服
2021/11/08
6970
从补丁追溯漏洞触发路径
Linux中的链接文件_软链接和硬链接
一、链接文件介绍 Linux操作系统中的“链接文件”分为硬链接(hard link)和软链接(symbolic link)。两种链接的本质区别在于inode。以下是详细介绍: 硬链接:当系统要读取一个文件时,会先读inode信息,然后再根据inode中的信息到块领域将数据取出来。而硬链接是直接再建立一个inode链接到文件放置的块领域,即进行硬连接时该文件内容没有任何变化,只是增加了一个指向这个文件的inode,并不会额外占用磁盘空间。硬链接有两个限制: 不能跨文件系统,因为不同的文件系统有不同的inode
Zoctopus
2018/06/20
6.9K0
Linux中的硬链接与软链接?
硬链接:在一个文件里面,对于目录来说,记录着文件的名字和inode号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号,是文件的唯一标识),我们也可以在多个目录里记录相同的inode号,它们的名字不一定相同,但只要inode号一样就行,它们最终都链接到一个文件里,这就是硬链接。也就是说,当文件的硬链接数被目录记录了一次,文件的硬链接数就增加了一次。所以,文件只要在目录里存在,它就至少有一个硬链接。
用户4877748
2020/07/21
4.3K0
Redis是否可以存图片、视频?
前几天看到某大型家电工厂的工业互联网系统架构图,发现用MongoDB存储图片及视频。那Redis同样也是Json类型的远程数据字典服务器,也可以用于存储图片、视频。实际Redis可以用512MB的空间存储用于存储字符串型的数据。
希望的田野
2019/09/24
9.7K0
Redis是否可以存图片、视频?
PKS中的RS触发器和SR触发器
上大学时,学习《数字电子技术》这门课,第一次接触到RS触发器的概念,当时学了个囫囵吞枣,只知道有个置位端,还有个复位端,当置位端为ON时,RS触发器的输出为ON,当复位端为ON时,RS触发器的输出为OFF,至于置位端和复位端都为ON,或者都为OFF,触发器的输出会怎样,什么情况下需要使用RS触发器,当时根本就没有考虑,看来教学和应用还是有点脱节的。
剑指工控
2022/11/14
1.4K0
PKS中的RS触发器和SR触发器
Docker容器是否可以改变世界?
2016年了,很多大牛开始预测技术趋势,其中一个普遍的观点我也很认同: Docker会更加流行,会改变程序世界 2015年的上半年我接触了Docker,熟悉之后,真有一点震惊的感觉,太方便了,可以解决很多问题 Container 通常翻译为容器,但还有另一个意思,就是“集装箱” 集装箱是21世纪最伟大的发明之一,它改变了世界货物运输体系,造就了一个高度自动化、标准化、低成本的物流体系,促进了经济的全球化发展 程序界也出现了同样的一个箱子,就是 Docker容器 Docker的核心特点 Docker是一个开源
dys
2018/04/03
6490
Docker容器是否可以改变世界?
点击加载更多

相似问题

从AMPscript获取电子邮件ID或名称

13

是否可以从电子邮件中的链接更新sharepoint列表项?

10

AMPScript中的IF语句

33

DataView in AMPScript

11

Exacttarget ampscript显示/隐藏移动电子邮件内容

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文