REDIS HGETALL按序输出结果
2019-01-29 10:29
405 查看
今天在项目中使用Redis的hash结构存一些商品数据,存的时候是按照商品id从小到大放进去的。然后现在想hgetAll着取出来,也能够按照id顺序再取出来,但是发现结果并不是这样的,输出是乱序的。
随决定看一下到底是为啥,发现了猫腻。
《REDIS设计与实现》中指出,
创建空白哈希表时, 程序默认使用 REDIS_ENCODING_ZIPLIST 编码, 当以下任何一个条件被满足时, 程序将编码从 REDIS_ENCODING_ZIPLIST 切换为 REDIS_ENCODING_HT :
哈希表中某个键或某个值的长度大于 server.hash_max_ziplist_value (默认值为 64 )。
压缩列表中的节点数量大于 server.hash_max_ziplist_entries (默认值为 512 )。
然后看了看自己的数据,发现值的长度大于64了,因此采用了hashtable的编码格式。是无序的。
相关文章推荐
- 导出redis中的特定 key值中的结果 并输出到文件
- 有关ssh连接linux服务器后在mysql查询后输出中文结果乱码的的问题
- 第10周项目2之观察输出结果
- Java使用Pipeline对Redis批量读写(hmset&hgetall)
- spark查询任意字段,并使用dataframe输出结果
- selenium+Python自动化测试 结果输出
- DateTime.Now.ToString("yyyy/MM/dd") 输出的结果是 2006-03-16
- access查询到的结果输出到excel
- 0101-ArcPy:将脚本工具的处理结果作为参数输出
- 开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推:
- C语言之int k,j,s; for (k=2;k<6;k++,k++)/*for(k=2;k<6;k=k+2)*/ {s=1; for(j=k;j<6;j++) s+=j; }输出结果为10
- kears训练中如何实时输出卷积层的结果?
- 编程序,输出1/3-3/5+5/7-7/9+19/21的计算结果
- SAS运行输出看不到结果
- Hadoop MultipleOutputs 结果输出到多个文件夹 出现数据不全,部分文件为空
- vmstat输出结果说明
- 获得命令的输出结果
- MySql数据库查询结果用表格输出PHP代码示例
- .Net ( C# ) 调用控制台程序并取得输出结果