首页 > 数据库 >Redis:HGETALL的排序问题

Redis:HGETALL的排序问题

时间:2022-09-29 20:45:02浏览次数:44  
标签:存储 顺序 hash ziplist Redis HGETALL Hash 排序

HGETALL 介绍

Returns all fields and values of the hash stored at key. In the returned value, every field name is followed by its value, so the length of the reply is twice the size of the hash.

Time complexity:
O(N) where N is the size of the hash.

Return
Array reply: list of fields and their values stored in the hash, or an empty list when key does not exist.

Hash有两种存储格式:ziplist、hashtable

默认情况下,Redis的Hash是使用ziplist进行存储的,当超出一定限制后,再改为hashtable进行存储。

ziplist是双向链表,存储顺序和数据插入顺序一致。查询结果顺序和存储顺序一致。

hashtable是字典结构,查询结果顺序和插入顺序不一致。


两种情况都满足时,Hash会使用 ziplist 进行存储:

  1. 哈希对象保存的所有键值对的键和值的字符串长度都小于 64 字节。对应配置:server.hash_max_ziplist_value。
  2. 哈希对象保存的键值对数量小于 512 个。对应配置:server.hash_max_ziplist_entries。

否则,改为hashtable存储。


查询数据存储结构:OBJECT ENCODING key


结论:

  • HGETALL 没有顺序性。如果需要顺序,业务上层排序。
  • Hash会根据数据量进行数据结构调整。目的:提高性能。

标签:存储,顺序,hash,ziplist,Redis,HGETALL,Hash,排序
From: https://www.cnblogs.com/txtp/p/16743010.html

相关文章

  • VMware虚拟机中Linux系统下面的redis安装(详解,含采坑经验!!!)
    部分参考了这篇博客,里面讲的很详细:https://www.cnblogs.com/flower-dance/p/14731073.html而我在安装的过程中还遇到了很多问题,在文末。首先说一下我的安装步骤如下:1、......
  • Arrays类、冒泡排序、稀疏数组
    Arrays类数组的工具类java.util.Arrays由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作......
  • 【Redis】RDB AOF
    AOF和RDB是两种redis持久化的机制。RDB:RDB是将支持当前数据的快照存成一个数据文件的持久化机制。1.在生成快照时,将当前进程fork出一个子进程.2.然后在子进程中循环所有......
  • 基础篇Redis
    1.初识Redis1.1.关系型与非关系型的差异存储方式关系型数据库基于磁盘进行存储,会有大量的磁盘IO,对性能有一定影响非关系型数据库,他们的操作更多的是依赖于内存来操......
  • redis分布式锁探讨
     基于jedis的能力,探讨了分布式锁的一些初级实现publicclassDistributeLock{privateJedisClusterjedisCluster;publicDistributeLock(){Se......
  • redis基础
    一、五大数据类型1、Redis键(key)①、首先创建一些key,并赋上对应值:redis127.0.0.1:6379>SETw3c1redisOKredis127.0.0.1:6379>SETw3c2mysqlOKredis127.0......
  • Redis(四)持久化
    官网介绍:http://www.redis.ioRedis提供了2个不同形式的持久化方式。RDB(RedisDataBase)AOF(AppendOfFile)第一章RDB(RedisDataBase)1.1官网介绍1.2RDB是什么?......
  • Lua 脚本在 Redis 事务中的应用实践
    Lua脚本在Redis事务中的应用实践使用过Redis事务的应该清楚,Redis事务实现是通过打包多条命令,单独的隔离操作,事务中的所有命令都会按顺序地执行。事务在执行的过程中,......
  • Lua 脚本在 Redis 事务中的应用实践
    Lua脚本在Redis事务中的应用实践使用过Redis事务的应该清楚,Redis事务实现是通过打包多条命令,单独的隔离操作,事务中的所有命令都会按顺序地执行。事务在执行的过程中......
  • 原生 Redis 跨数据中心双向同步优化实践
    原生Redis跨数据中心双向同步优化实践一、背景公司基于业务发展以及战略部署,需要实现在多个数据中心单元化部署,一方面可以实现多数据中心容灾,另外可以提升用户请求访问......