文档章节

redis-hash

 拐美人
发布于 09/19 20:17
字数 503
阅读 6
收藏 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
博文 67
码字总数 49480
作品 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
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
01/08
0
0
python - hash类型操作

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

_周小董
02/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux学习-1031(rsync同步工具 上)

10.28 rsync工具介绍 10.29/10.30 rsync常用选项 10.31 rsync通过ssh同步 一、 rsync工具介绍 rsync是一个同步工具,在日常的运维中常会用到。它可以本地同步,也实现可以远程两台机器同步。...

wxy丶
20分钟前
1
0
python实战一期:第一天

1. 为什么学习python 1.1 为什么要学Python? Python第一是个非常牛B的脚本语言,能满足绝大部分自动化运维的需求,又能做后端C/S架构,又能用WEB框架快速开发出高大上的Web界面,只有当你自...

laoba
22分钟前
2
0
Java并发编程学习三:线程同步的关键字以及理解

上篇文章中介绍了Java线程的带来的问题与内存模型中介绍了线程可能会引发的问题以及对应Java的内存模型,顺带介绍了Volatile和Sychronized关键字。今天对Java中涉及到的常见的关键类和关键字...

JerryLin123
29分钟前
0
0
我用代码来给你们分析一个赚钱的技巧

赚钱是个俗气的话题,但又是人人都绕不开的事情。我今天来“科学”地触碰下这个话题。 谈赚钱,就会谈到理财、投资,谈到炒股。有这样一个笑话: 问:如何成为百万富翁? 答:带一千万进入股...

crossin
29分钟前
1
0
spring MatchingBean应用

1、编写接口FactoryList import java.util.List;public interface FactoryList<E extends MatchingBean<K>, K> extends List<E> { E getBean(K factor); List<E> getBeanLi......

重城重楼
42分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部