文章目录
- 常用命令
- hset & hget
- hexists & hdel
- hkeys & hvals & hgetall
- hlen & hmget
- hsetnx
- hincrby & hincrbyfloat
- 内部编码
Hash 相比于 string 而言可以节省很多个 key ,一个 key 里面又可以包含了多个 key-value
常用命令
hset & hget
HSET key field value [field value ...]
HGET key field
hset:设置 hash 中指定的字段(field)的值(value),一个 key 中可以包含多个 field-value,相当于套娃。
hget:获取指定 key 中的指定 field 的值。没有这个 field 则返回 nil
hexists & hdel
HEXISTS key field
HDEL key field [field ...]
hexists:判断指定 key 中是否有指定 field 字段
hdel:删除指定 key 中的指定 field 字段,可以一次删除多个字段,返回删除成功的字段的个数
hkeys & hvals & hgetall
HKEYS key
HVALS key
HGETALL key
hkeys:获取指定 key 中的所有字段
hvals:获取指定 key 中的所有字段的值
hgetall:获取指定 key 中的所有字段以及所有字段的值
hlen & hmget
HMGET key field [field ...]
HLEN key
hlen:获取指定 key 的字段个数
hmget:一次获取多个指定 key 中指定字段的值
hsetnx
HSETNX key field value
在指定 key 的字段不存在的情况下设置字段和值,成功返回1,失败返回0
hincrby & hincrbyfloat
HINCRBY key field increment
HINCRBYFLOAT key field increment
hincrby:为指定 key 的指定字段的值加上一个指定的整数
hincrbyfloat:为指定 key 的指定字段的值加上一个指定的浮点数
指定字段的值必须是表示为 数字
内部编码
哈希的内部编码有两种:
- 当哈希类型元素个数⼩于 hash-max-ziplist-entries 配置(默认 512 个)、同时所有值都⼩于 hash-max-ziplist-value 配置(默认 64 字节)时,redis 会使用 ziplist 作为编码。这样紧凑的结构实现多个元素的连续存储更能节省内存。
- 当无法满足 ziplist 时则会选用 hashtable 作为存储,虽然会变大但是 hashtable 的读写时间复杂度为 O(1)