获取 hash 指定字段的值

发布时间:2025-06-24 17:51:54  作者:北方职教升学中心  阅读量:166


获取 hash 指定字段的值。它更适合缓存具有多个属性的数据。

redis> HSET myhash field1 "foo"(integer) 1redis> HDEL myhash field1(integer) 1redis> HDEL myhash field2(integer) 0。HINCRBY 浮点数版本。

获取 hash 所有字段在中间。所有值都⼩于 hash-max-ziplist-value 配置(默认 64 字节)时,Redis 会使⽤ ziplist 作为哈希的内部实现,ziplist 使⽤更紧凑的结构实现多元素的连续存储,因此,

获取 hash 所有字段及相应值。

HDEL key field [field ...]。

redis> HSET myhash field1 "Hello"(integer) 1redis> HSET myhash field2 "World"(integer) 1redis> HKEYS myhash1) "field1"#;2) "field2"#;

HVALS。

语法。
如果字段不存在,设置 hash 中间的字段和值。
时间复杂度:O(N), N 为 field 的个数.。
HINCRBY key field increment。
语法。

举例。


HSET。

举例。
时间复杂度:O(N), N 为 field 的个数.。

HINCRBY。

举例。

HGET key field。
时间复杂度:O(1)。

hashtable(#xfff09;:当哈希类型⽆法满⾜ ziplist ￰的条件c;Redis 会使⽤ hashtable 作为哈希的内部实现,因为此时 ziplist 读写效率会下降,⽽ hashtable 读写时间的复杂性为 O(1)。

HINCRBYFLOAT。

举例。
redis> HSET myhash field1 "Hello"(integer) 1redis> HSET myhash field2 "World"(integer) 1redis> HGETALL myhash1) "field1"#;2) "Hello"3) "field2"#;4) "World"
HMGET。
举例。   
类似String类型,Hash类型也可用于缓存数据。

HSETNX。性别等。

例如,Hash类型中࿰可以缓存经常访问的商品信息和用户信息c;为了快速读取和响应客户端的要求。

HSET。例如,存储ID为1的汽车对象,可分别使用名称为coloror、

HSET key field value [field value ...]。

HINCRBYFLOAT。
语法。
HSETNX。
127.0.0.1:6379> object encoding hashkey。返回值:字段变化后的值。

HEXISTS。

获取 hash 所有字段的数量。
redis> HSETNX myhash field "Hello"(integer) 1redis> HSETNX myhash field "World"(integer) 0redis> HGET myhash field"Hello"
HINCRBY。 时间复杂度:O(1)。
时间复杂度:O(N), N 为 field 的个数.。
redis> HSET myhash field1 "Hello"(integer) 1redis> HSET myhash field2 "World"(integer) 1redis> HMGET myhash field1 field2 nofield1) "Hello"2) "World"3) (nil)。

举例。

HEXISTS key field。
127.0.0.1:6379> object encoding hashkey。返回值:字段个数。

内部编码。
时间复杂度:O(1)。

1)当 field 个数⽐较少且没有⼤的 value 时,内部编码为 ziplist:
127.0.0.1:6379> hmset hashkey f1 v1 f2 v2。

返回值:字段列表。

获取 hash 所有的值。 下⾯的⽰例演⽰哈希类型的内部编码,以及响应的变化。
Hash类型非常适合存储对象的所有属性,如用户信息、

redis> HSET mykey field 10.50(integer) 1redis> HINCRBYFLOAT mykey field 0.1"10.6"redis> HINCRBYFLOAT mykey field -5"5.6"redis> HSET mykey field 5.0e3(integer) 0redis> HINCRBYFLOAT mykey field 2.0e2"5200"
内部编码。
同样,用户信息󿼌Hash类型的键࿰可以使用用户的IDc;用户的各种属性(如用户名、
127.0.0.1:6379> object encoding hashkey。

HGET。name和price的字段存储汽车的颜色、

HKEYS。
举例。

HVALS。

HKEYS key。

"ziplist”。

HDEL。

HDEL。返回值:字段变化后的值。

1.缓存数据。

举例。

举例。

语法。

返回值:删除此操作的字段数。

"hashtable"
3)当 field 个数超过 512 时,也会将内部编码转换为 hashtable:
127.0.0.1:6379> hmset hashkey f1 v1 h2 v2 f3 v3 ... 省略 ... f513 v513。名称和价格。
时间复杂度:删除⼀个元素为 O(1). 删除 N 个元素为 O(N).。节省内存⽅⾯⽐hashtable 更加优秀。 返回值:1 表⽰设置成功󿀌0 表⽰失败。

返回值:字段及相应值。

redis> HSET myhash field1 "Hello"(integer) 1redis> HSET myhash field2 "World"(integer) 1redis> HLEN myhash(integer) 2。 时间复杂度:O(1)。
时间复杂度:只查询⼀个元素为 O(1), 查询多个元素为 O(N), N 查询元素数量.。
HLEN。
redis> HSET myhash field1 "foo"(integer) 1redis> HGET myhash field1"#;foo"redis> HGET myhash field2(nil)。年龄、

HVALS key。

语法。

返回值:字段对应的值或 nil。

语法。
举例。

删除 hash 中间指定的字段。

获取 hash 指定字段的值。

语法。
将 hash 将指定值添加到中间字段对应的值中。

语法。
redis> HSET myhash field1 "Hello"(integer) 1redis> HSET myhash field2 "World"(integer) 1redis> HVALS myhash1) "Hello"2) "World"
HGETALL。
HLEN key。

应用场景。

设置 hash #xff08中指定的字段;field)值(value)。商品信息等。

"hashtable"
应用场景。

HKEYS。

目录。

有两种内部编码:
ziplist(#xff09压缩列表;:当哈希类型元素的数量⼩于 hash-max-ziplist-entries 配置(默认 512 )、同时,

⼀次获取 hash 多个字段的值。

HSETNX key field value。

判断 hash 是否有指定的字段。
OK。

redis> HSET myhash field1 "Hello"(integer) 1redis> HGET myhash field1"##;Hello"redis> HSET myhash field2 "Hi" field3 "World"(integer) 2redis> HGET myhash field2"##;Hi"redis> HGET myhash field3"##;World"redis> HGETALL myhash1) "field1"##;2) "Hello"3) "field2"##;4) "Hi"5) "field3"##;6) "World"
HGET。 时间复杂度:O(1)。

HEXISTS。

HINCRBYFLOAT key field increment。但是,Hash类型可以存储多个字段和字段值,因此,

返回值:字段对应的值或 nil。

返回值:所有的值。

HGETALL key。
OK。

举例。
返回值:添加字段的数量。;存储作为字段和字段值。
语法。

语法。

时间复杂度:插⼊⼀组 field 为 O(1), 插⼊ N 组 field 为 O(N)。

语法。

语法。
redis> HSET myhash field1 "foo"(integer) 1redis> HEXISTS myhash field1(integer) 1redis> HEXISTS myhash field2(integer) 0。

举例。

HMGET key field [field ...]。

HGETALL。对象类别和ID可以构成键名,使用字段表示对象的属性,而字段值则存储属性值。
时间复杂度:O(1)。

HMGET。

返回值:1 表⽰存在,0 表⽰不存在。

HLEN。

redis> HSET myhash field 5(integer) 1redis> HINCRBY myhash field 1(integer) 6redis> HINCRBY myhash field -1(integer) 5redis> HINCRBY myhash field -10(integer) -5。
2.存储对象属性。
2)当有 value ⼤于 64 ࿰字节c;将内部编码转换为 hashtable:
127.0.0.1:6379> hset hashkey f3 "one string is bigger than 64 bytes ... 省略 ..."
OK。