redis-hash

哈希类型是指健值自己又是一个键值对结构redis

基本命令:
hset key field value 设置值编程

hget(获取),hdel(删除),hlen(计算field个数),hmget(批量设置),hexists(是否存在),hkeys(获取全部的field),hvals(获取全部的value),hstrlen(计算长度)编码

hincrby,hincrbyfloat 跟incrby同样,可是它们做用域是fieldspa

内部编码:blog

1.ziplist(压缩列表),当哈希类型元素小于hash-max-ziplist-entries配置(默认521个),同时全部值都小于hash-max-ziplist-value配置(默认64字节),redis会使用ziplist做为内部实行,全部在节约内存方面比hashtable优秀ip

2.hashtable(哈希表),当哈希类型没法知足ziplist条件时候,redis会使用hashtable做为哈希的内部实现内存

,所以此时ziplist读写效率降低,而hashtable读写时间复杂度o(1)作用域

三种方案的实现方法和优缺点:字符串

1)原生字符串类型,每一个属性一个键get

hset user:1 name xiaoming

优势:简单直观,每一个属性都支持更新操做

缺点:占用过多的健,内存占用量大,内聚性差,不会在生产环境使用

2)序列化字符串类型,将用户信息序列化后用一个键保存

hset user:1 serialize(userinfo)

优势:简化编程

缺点:序列化和反序列化有必定的开销,同时每次更新属性都须要把所有数据取出进行反徐丽华,更新后序列化到redis

3)哈希类型:每一个用户属性使用一对field-value,可是只用一个键保存

hset user:1  name xiaoming age 12

优势:简单直观,能够减小内存的使用

缺点:须要控制内部编码ziplist和hashtable转换,hashtable会消耗更多的内存

相关文章
相关标签/搜索