Hash概念
Hash(哈希)
本质都是key - value
但Hash的格式有点特别 key - map (filed-value)
Redis Hash 是一个String类型的filed 和 value 的映射表, hash 特别适合用于存储对象。类似java中的Map <String, object>

| 127.0.0.1:6379> hset hash name v1 |
| (integer) 1 |
| 127.0.0.1:6379> hget hash name |
| "v1" |
| 127.0.0.1:6379> hmset hash name v2 name2 v3 |
| OK |
| 127.0.0.1:6379> hmget hash name name2 |
| 1) "v2" |
| 2) "v3" |
| 127.0.0.1:6379> hgetall hash |
| 1) "name" |
| 2) "v2" |
| 3) "name2" |
| 4) "v3" |
| 127.0.0.1:6379> hdel hash name name2 |
| (integer) 2 |
| 127.0.0.1:6379> hgetall hash |
| (empty list or set) |
| 127.0.0.1:6379> hset hash name v1 |
| (integer) 1 |
| 127.0.0.1:6379> hmset hash name1 v1 name2 v2 |
| OK |
| 127.0.0.1:6379> hlen hash |
| (integer) 3 |
| 127.0.0.1:6379> hgetall |
| (error) ERR wrong number of arguments for 'hgetall' command |
| 127.0.0.1:6379> hgetall hash |
| 1) "name" |
| 2) "v1" |
| 3) "name1" |
| 4) "v1" |
| 5) "name2" |
| 6) "v2" |
| 127.0.0.1:6379> HEXISTS hash name |
| (integer) 1 |
| 127.0.0.1:6379> hkeys hash |
| 1) "name" |
| 2) "name1" |
| 3) "name2" |
| 127.0.0.1:6379> hvals hash |
| 1) "v1" |
| 2) "v1" |
| 3) "v2" |
| |
| 127.0.0.1:6379> hset hash name3 1 |
| (integer) 1 |
| 127.0.0.1:6379> HINCRBY hash name3 1 |
| (integer) 2 |
| 127.0.0.1:6379> hget hash name3 |
| "2" |
| 127.0.0.1:6379> hsetnx hash name4 hello |
| (integer) 1 |
| 127.0.0.1:6379> hsetnx hash name4 world |
| (integer) 0 |
hash变更的数据 user name age 尤其是用户信息之类的,经常变动的信息! hash更适合存储对象
| 127.0.0.1:6379> hset user:1 name luo |
| (integer) 1 |
| 127.0.0.1:6379> hget user:1 name |
| "luo" |
hash的数据结构
Hash类型对应的数据结构是两种:ziplist(压缩列表),hashtable(哈希表)。当field-value长度较短且个数较少时,使用ziplist,否则使用hashtable
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决