原文在这里

Redis哈希是以字段-值对的形式组织的记录类型。你可以使用哈希表示基本对象,并存储计数器的分组,等等。

> HSET bike:1 model Deimos brand Ergonom type 'Enduro bikes' price 4972
(integer) 4
> HGET bike:1 model
"Deimos"
> HGET bike:1 price
"4972"
> HGETALL bike:1
1) "model"
2) "Deimos"
3) "brand"
4) "Ergonom"
5) "type"
6) "Enduro bikes"
7) "price"
8) "4972"

虽然哈希很方便表示对象,但实际上,你可以放置在哈希中的字段数量没有实际限制(除了可用内存),因此你可以在应用程序中以许多不同的方式使用哈希。

HSET命令设置哈希的多个字段,而HGET检索单个字段。HMGET类似于HGET,但返回值数组:

> HMGET bike:1 model price no-such-field
1) "Deimos"
2) "4972"
3) (nil)

还有一些命令可以对单个字段执行操作,比如HINCRBY

> HINCRBY bike:1 price 100
(integer) 5072
> HINCRBY bike:1 price -100
(integer) 4972

你可以在文档中找到哈希命令的完整列表

值得注意的是,小型哈希(即,具有小值的几个元素)以内存中的一种特殊方式进行编码,使它们非常内存高效。

基本命令

  • HSET在哈希上设置一个或多个字段的值。
  • HGET返回给定字段的值。
  • HMGET返回一个或多个给定字段的值。
  • HINCRBY按所提供的整数递增给定字段的值。

详见完整的列表命令

示例

  • 存储bike:1已经骑行的次数、发生事故的次数或更改所有者的次数的计数器:
> HINCRBY bike:1:stats rides 1
(integer) 1
> HINCRBY bike:1:stats rides 1
(integer) 2
> HINCRBY bike:1:stats rides 1
(integer) 3
> HINCRBY bike:1:stats crashes 1
(integer) 1
> HINCRBY bike:1:stats owners 1
(integer) 1
> HGET bike:1:stats rides
"3"
> HMGET bike:1:stats owners crashes
1) "1"
2) "1"

性能

大多数Redis哈希命令都是O(1)。

少部分命令 - 如HKEYSHVALSHGETALL - 是 O(n),n是字段-值的数量。

限制

每个哈希可以存储最多4,294,967,295($2^{32} - 1$)个字段-值对。在实践中,你的哈希仅受托管Redis部署的VMs上的总体内存限制。

了解更多


孟斯特

声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin
blog: mengbin
Github: mengbin92
cnblogs: 恋水无意
腾讯云开发者社区:孟斯特