Redis hash是一个string类型的field(字段)和value(值)的映射表,hash特别适合用于存储对象。
hash是将任意长度的输入通过散列算法变换成固定长度的输出,最终输出hash值。
一个哈希存储一条数据,一个字段field存储一条数据中的一个属性,字段值value是属性对应的值。
Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。
哈希表hash table是为了将数据映射到数组中某个位置,通过数组下标访问元素以提高数据的查询速度,这种查询的平均期望时间复杂度为0(1)。
例:
127.0.0.1:6379> HMSET hashkey field1 "value1" field2 "value2 with space but in one str" field3 3 field4 value4 OK 127.0.0.1:6379> HGETALL runoobkey 1) "field1" 2) "value1" 3) "field2" 4) "value2 with space but in one str" 5) "field3" 6) "3" 7) "field4" 8) "value4"
列举出与Redis Hash相关的基本命令:
序号 | 命令 | 描述 |
1 | HDEL key field1 [field2] | 删除一个或多个哈希表字段 |
2 | HEXISTS key field | 查看哈希表 key 中,指定的字段是否存在 |
3 | HGET key field | 获取存储在哈希表中指定字段的值 |
4 | HGETALL key | 获取在哈希表中指定 key 的所有字段和值 |
5 | HINCRBY key field increment | 为哈希表 key 中的指定字段的整数值加上增量 increment |
6 | HINCRBYFLOAT key field increment | 为哈希表 key 中的指定字段的浮点数值加上增量 increment |
7 | HKEYS key | 获取所有哈希表中的字段 |
8 | HLEN key | 获取哈希表中字段的数量 |
9 | HMGET key field1 [field2] | 获取所有给定字段的值 |
10 | HMSET key field1 value1 [field2 value2] | 同时将多个 field-value (域-值)对设置到哈希表 key 中 |
11 | HSET key field value | 将哈希表 key 中的字段 field 的值设为 value |
12 | HSETNX key field value | 只有在字段 field 不存在时,设置哈希表字段的值 |
13 | HVALS key | 获取哈希表中所有值 |
14 | HSCAN key cursor [MATCH pattern] [COUNT count] | 迭代哈希表中的键值对 |