Redis底层学习(四)—存储类型-Hash篇

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis底层学习(四)—存储类型-Hash篇

特点

1.适⽤场景:存储⽆序字典的数据,⽐如:适合存储对象类型、存储猪⾁价格等。

2.它的内部采⽤ 数组 + 链表 的结构,类似java⾥的HashMap。

hash的key值只能是字符串。将对象存储为hash结构可以针对需要来获取部分数据,⽽不是将整个对象获取。减少⽹络资源浪费。

具体服务器操作命令

添加元素到key中: HSET [key] [field1] [value1] … [fieldN] [valueN]

查询key中field的价格: HGET [key] [field]

查询key中元素个数: HLEN [key]

查询key中所有元素: HGETALL [key]

批量添加元素: HMSET [key] [field1] [value1] … [fieldN] [valueN]

批量获取元素: HMGET [key] [field1] … [fieldN]

底层结构

哈希对象编码⽀持 ziplist 和 hashtable 两种

ziplist 编码底层使⽤压缩列表实现,当有新的键值对要加⼊到哈希对象时,会先将 key 值

从队尾推⼊压缩列表中,再将这个key对应的 value 值从队尾推⼊压缩列表中;所以,同⼀键

值对的两个节点总是紧挨在⼀起的——key在前,value在后

数据结构:

hashTable:

同时满⾜两个条件时是 ziplist 编码类型,否则为 hashtable 编码类型

1.哈希对象中所有键值对中, key 和 value 的⻓度均⼩于等于64字节。

2.哈希对象中 键值对 的个数⼩于512个

应用场景

使用Hash实现购物车
    将key设置为用户Id, field 可以设置为商品Id ,value为商品的数量


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
15天前
|
存储 消息中间件 监控
Redis Stream:实时数据流的处理与存储
通过上述分析和具体操作示例,您可以更好地理解和应用 Redis Stream,满足各种实时数据处理需求。
51 14
|
2月前
|
存储 NoSQL 算法
Redis分片集群中数据是怎么存储和读取的 ?
Redis集群采用哈希槽分区算法,共有16384个哈希槽,每个槽分配到不同的Redis节点上。数据操作时,通过CRC16算法对key计算并取模,确定其所属的槽和对应的节点,从而实现高效的数据存取。
56 13
|
2月前
|
存储 消息中间件 NoSQL
Redis数据结构:List类型全面解析
Redis数据结构——List类型全面解析:存储多个有序的字符串,列表中每个字符串成为元素 Eelement,最多可以存储 2^32-1 个元素。可对列表两端插入(push)和弹出(pop)、获取指定范围的元素列表等,常见命令。 底层数据结构:3.2版本之前,底层采用**压缩链表ZipList**和**双向链表LinkedList**;3.2版本之后,底层数据结构为**快速链表QuickList** 列表是一种比较灵活的数据结构,可以充当栈、队列、阻塞队列,在实际开发中有很多应用场景。
|
3月前
|
存储 NoSQL Redis
Redis 哈希(Hash)
10月更文挑战第16天
51 1
|
3月前
|
消息中间件 存储 监控
redis 的List类型 实现 排行榜
【10月更文挑战第8天】
50 2
|
3月前
|
存储 NoSQL Redis
redis-set类型
【10月更文挑战第6天】
57 1
|
2月前
|
存储 NoSQL Redis
【赵渝强老师】Redis的存储结构
Redis 默认配置包含 16 个数据库,通过 `databases` 参数设置。每个数据库编号从 0 开始,默认连接 0 号数据库,可通过 `SELECT <dbid>` 切换。Redis 的核心存储结构包括 `dict`、`expires` 等字段,用于处理键值和过期行为。添加键时需指定数据库信息。视频讲解和代码示例详见内容。
|
3月前
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
378 3
|
3月前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
45 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
2月前
|
存储 NoSQL 关系型数据库
Redis的ZSet底层数据结构,ZSet类型全面解析
Redis的ZSet底层数据结构,ZSet类型全面解析;应用场景、底层结构、常用命令;压缩列表ZipList、跳表SkipList;B+树与跳表对比,MySQL为什么使用B+树;ZSet为什么用跳表,而不是B+树、红黑树、二叉树