哈希
2019-07-10 本文已影响0人
lookphp
哈希,也叫字典、map、关联数组。
在redis中,哈希类型,是指键值本身,又是一个键值对结构。
哈希类型的映射关系叫做 field-value。
字符串和哈希类型对比
命令
- 设置值
hset key field value
- 获取值
hget key field
- 删除field
hdel key field [field ...]
- 计算field的个数
hlen key
- 批量设置或获取 field-value
hmset key field value [field value ...]
hmget key field [field ...]
- 判断field是否存在
hexists key field
- 获取所有field
hkeys key
- 获取所有value
hvals key
- 获取所有的 field-value
hgetall key
如果哈希元素个数较多,会存在阻塞redis的可能。
内部编码
- ziplist (压缩列表) 节省内存,适用于小数据量的 ,field个数小于512个,value小于64字节
- hashtable (哈希表)
使用场景
MySQL中存储的用户信息 Redis用哈希类型缓存用户信息哈希类型和关系型数据库有两点不同:
- 哈希类型是稀疏的。
- 关系型数据库可以做复制的关系查询。
缓存用户信息方案
-
原生字符串类型:每个属性一个键。
set user:1:name tom
set user:1:age 12
set user:1:city beijing
-
序列化字符串类型:将用户信息序列化后用一个键保存。
set user:1 serialize (userInfo)
-
哈希类型:每个用户属性使用一对field-value,但是只用一个键保存。
hmset user:1 name tom age 12 city beijing