Redis

redis-API-哈希

2018-12-11  本文已影响3人  PHP的艺术编程
API-哈希.png

文档地址

注意:
    在使用hGetAll时,如果哈希元素个数比较多,会存在阻塞Redis的可能。如果开发人员只需要获取部分field,可以使用hMGet,如果一定要获取全部
field-value,可以使用hscan命令,该命令会渐进式遍历哈希类型

内部编码

编码的选择
编码的区别

因为Rziplist使用更加紧凑的结构实现多个元素的连续存储,所以在节省内存方面比hashtable更加优秀

案例

1.缓存用户信息

ID name age sex
1 abner 20 1
2 abner2 21 2
(1)序列化哈希类型:将用户信息序列化后用一个键保存
hSet user:user_info key serialize(userInfo)

优点:字段内容可以和数据库对应

缺点:序列化和反序列化占用一定的开销,当子健比较多或者value较大的时候,会切换成hashtable消耗更多内存。

(2)序列化字符串类型:将用户信息序列化后用一个键保存
set user:1 serialize(userInfo)

优点:简化编程,如果合理的使用序列化可以提高内存的使用效率。

缺点:序列化和反序列化有一定的开销,同时每次更新属性都需要把全
部数据取出进行反序列化,更新后再序列化到Redis中。

(2)哈希类型:每个用户属性使用键值对,但是只用一个键保存。
hMSet user:1 name abner 20 sex 1

优点:简单直观,如果使用合理可以减少内存空间的使用。

缺点:要控制哈希在ziplist和hashtable两种内部编码的转换,hashtable会
消耗更多内存。

上一篇 下一篇

猜你喜欢

热点阅读