前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis 系列(3) —— Hash

Redis 系列(3) —— Hash

作者头像
求和小熊猫
发布2021-09-10 10:48:52
4070
发布2021-09-10 10:48:52
举报

Hash 散列

Redis 的散列会将一个键和一个散列在数据库里关联起来,用户可以在散列中为任意多个字段设置值。与字符串键一样,散列的字段和值既可以是文本数据,也可以是二进制数据。

通过使用散列键,用户可以把关联的多项数据存储到同一个散列里面,以便对这些数据进行管理。

散列的相关命令

1. 设置某个hash 的字段值

设置散列值的相关命令格式为 hset key field value [field value ...] 【示例】

代码语言:javascript
复制
127.0.0.1:6379> hset hashtest f1 v1
(integer) 1
2. 获取某个hash 字段值

获取散列值的相关命令格式为 hget key field 【示例】

代码语言:javascript
复制
127.0.0.1:6379> hget hashtest f1
"v1"
3. 删除 hash 中的某个字段

删除 hash 中的某个字段的命令格式为 hdel key field [field ...] 【示例】

代码语言:javascript
复制
127.0.0.1:6379> hdel hashtest f1
(integer) 1
4. 统计 hash 中字段的个数

统计 hash 中字段个数的命令的格式为 hlen key 【示例】

代码语言:javascript
复制
127.0.0.1:6379> hlen hashtest
(integer) 0
5. 批量设置与获取 hash 的值

批量设置 hash 的字段的命令格式为 hmset key field value [field value...] 批量获取 hash 的字段值 hmget key field [field ...] 【示例】

代码语言:javascript
复制
127.0.0.1:6379> hmset hash k1 v1 k2 v2
OK
127.0.0.1:6379> hmget hash k1 k2
1) "v1"
2) "v2"
6. 判断 field 是否存在

判断 field 是否存在的命令格式为 hexists key field 【示例】

代码语言:javascript
复制
127.0.0.1:6379> hexists hash k1
(integer) 1
7. 获取所有的 field

获取所有 field 的命令格式为 hkeys key 【示例】

代码语言:javascript
复制
127.0.0.1:6379> hkeys hash
1) "k1"
2) "k2"
8. 获取所有的 value

获取所有的 value 的命令格式为 hvals key 【示例】

代码语言:javascript
复制
127.0.0.1:6379> hvals hash
1) "v1"
2) "v2"
9. 获取所有的 field-value

获取所有格的hash 的字段与值的命令格式为 hgetall key 【示例】

代码语言:javascript
复制
127.0.0.1:6379> hgetall hash
1) "k1"
2) "v1"
3) "k2"
4) "v2"
10. hash 的 field 的值自增

字段值自增的命令格式为 hincrby key fieldhincrbyfloat key field

11. 计算 hash 的 field 的字符串长度

统计字符串长度的命令格式为 hstrlen key field

Hash 的内部编码

hash 类型的内部编码有两种 ziplist (压缩列表) 和 hashtable (哈希表)

ziplist (压缩列表): 当哈希类型元素个数小于 hash-max-ziplist-entries 配置(默认 512 个)、同时所有值都小于 hash-max-ziplist-values 配置时(默认 64 个字节)。Redis 会使用 ziplist 作为 hash 的内部实现,ziplist 使用更加紧凑的结构实现多个元素的连续存储,所以在节省内存方面比 hashtable 更加优秀

hashtable (哈希表): 当哈希类型无法满足 ziplist 的条件时,Redis 就会使用 hashtable 作为哈希的内部实现,因为此时 ziplist 的读写效率会下降。而 hashtable 的读写时间复杂度为 O(1)。

查看 hash 的编码格式的命令为 object encoding hashkey

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-04-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Hash 散列
    • 散列的相关命令
      • Hash 的内部编码
      相关产品与服务
      云数据库 Redis
      腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档