文档章节

redis-hash

 拐美人
发布于 2018/09/19 20:17
字数 503
阅读 7
收藏 0

哈希类型是指健值本身又是一个键值对结构

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

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

hincrby,hincrbyfloat 跟incrby一样,但是它们作用域是field

内部编码:

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

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

,因此此时ziplist读写效率下降,而hashtable读写时间复杂度o(1)

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

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

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会消耗更多的内存

© 著作权归作者所有

共有 人打赏支持
上一篇: redis-list
下一篇: redis-string
粉丝 1
博文 73
码字总数 57207
作品 0
浦东
私信 提问
redis源码分析之内存布局

介绍 众所周知,redis是一个开源、短小、高效的key-value存储系统,相对于memcached,redis能够支持更加丰富的数据结构,包括: 字符串(string) 哈希表(map) 列表(list) 集合(set) ...

wangdy
2016/07/05
6
0
ThinkPHP扩展,实现Redis的CURD操作。

接下为将以ThinkPHP作为MVC开发框架,详细介绍Redis的CURD操作。需要说明的是,在ThinkPHP中本身并不支持Redis开发环境,只支持使用Redis开发简单的数据缓存功能。所以我们必须要通过扩展功能...

VHUOI
2016/11/22
713
3
初学Redis(2)——用Redis作为Mysql数据库的缓存

用Redis作Mysql数据库缓存,必须解决2个问题。首先,应该确定用何种数据结构存储来自Mysql的数据;在确定数据结构之后,还要考虑用什么标识作为该数据结构的键。 直观上看,Mysql中的数据都是...

Airship
2016/01/25
29
0
python - hash类型操作

Redis在内存中存储hash类型是以name对应一个字典形式存储的 常用操作 在name对应的hash中获取根据key获取value hget(name,key) 在name 对应的hash 中设备键值对 hset(name, key, value) 在n...

_周小董
2018/02/06
0
0
Understanding Redis hash-max-ziplist-entries

Understanding Redis hash-max-ziplist-entries Peterbe.com2018-01-081 阅读 redismaxhashentries This is an advanced topic for people who do serious stuff in Redis. I need to do ser......

Peterbe.com
2018/01/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MySQL的分表与分区

MySQL分表分区是解决大数据量导致MySQL性能低下的两种方法。 什么是MySQL分表 从表面意思上看,MySQL分表就是将一个表分成多个表,数据和数据结构都有可能会变。MySQL分表分为垂直分表和水平...

吴伟祥
22分钟前
1
0
MySQL查询执行

当我们希望MySQL能够以更高的性能运行查询时,最好的办法就是弄清楚MySQL是如何优化和执行查询的。一旦理解了这一点,很多查询优化工作实际上就是遵循一些原则让优化器能够按照预想的合理方式...

问题终结者
今天
1
0
CDH5动静态资源池配置与回滚

关于动态 静态资源池的配置以前都有提过,可以从以下几篇了解: YARN动态资源池配置案例 https://yq.aliyun.com/ziliao/346856# Hadoop YARN配置参数剖析(4)—Fair Scheduler相关参数 Hadoop...

hblt-j
今天
3
0
WordPress仿站实战教程

有一个月没有写blog了,一直在学习wordpress的知识,现在能够进行简单的政府企业门户网站的仿制,wordpress的主题订制,一般是对前端要求比较高,wordpress学会了,建站还是非常的快的。下面...

临江仙卜算子
今天
4
0
图像库stb_image

https://github.com/nothings/stb 目前一般主流的图像格式也就是bmp,jpg,png,tga,dds,除了DDS一般是给DX用的,虽然一堆OpenGL程序也有用的,但是我一般只用png和tga, png不用说了,带a...

robslove
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部