一:Redis 哈希(Hash)

  Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。

  Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿).

  redis中Hash在内存中的存储格式如下图

--------------------------------------------------------------------

二:hash常用命令

  1)hset(name, key, value)         name对应的hash中设置一个键值对(不存在,则创建;否则,修改)

  2)hmset(name, mapping)        在name对应的hash中批量设置键值对

  3)hget(name,key)   在name对应的hash中获取根据key获取value

  4)hmget(name, keys, *args)  在name对应的hash中获取多个key的值

  5)hgetall(name)  获取name对应hash的所有键值

  6)hlen(name) 获取name对应的hash中键值对的个数

  7)hkeys(name) 获取name对应的hash中所有的key的值

  8)hvals(name) 获取name对应的hash中所有的value的值

  9)hexists(name, key) 检查name对应的hash是否存在当前传入的key

  10)hdel(name,*keys) 将name对应的hash中指定key的键值对删除

  11)hincrby(name, key, amount=1)  自增name对应的hash中的指定key的值,不存在则创建key=amount

  12)hincrbyfloat(name, key, amount=1.0) 自增name对应的hash中的指定key的值,不存在则创建key=amount

  13)hscan(name, cursor=0, match=None, count=None) 迭代哈希表中的键值对

  14)hscan_iter(name, match=None, count=None) 利用yield封装hscan创建生成器,实现分批去redis中获取数据

三:示例

[BEGIN] 2017/7/29 21:29:50
127.0.0.1:6379> HSET n1 k1 "shi" 生成一个hash 一个键值对
(integer) 1
127.0.0.1:6379> HSET n2 k2 "san" k3 "jun" 生成hash 批量键值对
(integer) 2
127.0.0.1:6379> HGET n1 k1 hash中获取根据key获取value
"shi"
127.0.0.1:6379> HMGET n2 k2 k3 对应的hash中获取多个key的值
1) "san"
2) "jun"
127.0.0.1:6379> HGETALL n2 hash的所有键值
1) "k2"
2) "san"
3) "k3"
4) "jun"
127.0.0.1:6379> HLEN n2 对应的hash中键值对的个数
(integer) 2
127.0.0.1:6379> HKEYS n2 对应的hash中所有的key的值
1) "k2"
2) "k3"
127.0.0.1:6379> HVALS n2 对应的hash中所有的value的值
1) "san"
2) "jun"
127.0.0.1:6379> HEXISTS n2 k2 对应的hash是否存在当前传入的key
(integer) 1
127.0.0.1:6379> HEXISTS n2 k1
(integer) 0
127.0.0.1:6379> HDEL n2 k2 对应的hash中指定key的键值对删除
(integer) 1
127.0.0.1:6379> HGET n2 k2
(nil)
127.0.0.1:6379> HINCRBY n2 k3 2 自增name对应的hash中的指定key的值,不存在则创建key=amount
(error) ERR hash value is not an integer
127.0.0.1:6379> HSET n2 k4 1
(integer) 1
127.0.0.1:6379> HINCRBY n2 k4 1
(integer) 2
127.0.0.1:6379> HINCRBYFLOAT n2 k4 2.3
"4.3"
127.0.0.1:6379> HSCAN n2 0 match j*
1) ""
2) (empty list or set)
127.0.0.1:6379> HSCAN n2 0 match k* 迭代哈希表中的键值对
1) ""
2) 1) "k3"
2) "jun"
3) "k4"
4) "4.3"
127.0.0.1:6379> HSCAN_iter n2 match k*
(error) ERR unknown command 'HSCAN_iter' [END] 2017/7/29 21:43:48

缓存数据库-redis数据类型和操作(hash)的更多相关文章

  1. 缓存数据库-redis数据类型和操作(list)

    转: 狼来的日子里! 奋发博取 缓存数据库-redis数据类型和操作(list) 一:Redis 列表(List) Redis列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素导列表的头部( ...

  2. 缓存数据库-redis数据类型和操作(string)

    Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合) 一:String(字符串) string是redis ...

  3. 缓存数据库-redis数据类型和操作(sorted set)

    一:Redis 有序集合(sorted set) Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数.redis正是 ...

  4. 缓存数据库-redis数据类型和操作(set)

    一:Redis 集合(Set) Redis的Set是string类型的无序集合.集合成员是唯一的,这就意味着集合中不能出现重复的数据. Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复 ...

  5. 缓存数据库redis

    什么是Redis? Redis是一个TCP服务器,支持请求/响应协议. 在Redis中,请求通过以下步骤完成: 客户端向服务器发送查询,并从套接字读取,通常以阻塞的方式,用于服务器响应. 服务器处理命 ...

  6. Redis数据类型及其操作

    redis数据类型即操作 1. 字符串 set 设置字符串 格式: set key value 例子: set name kainhuck get 获取字符串的值 格式: get key 例子: ge ...

  7. 缓存数据库-redis介绍

    一:Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的 ...

  8. Redis数据类型和操作

    <"Java技术员"成长手册>,包含框架.存储.搜索.优化.分布式等必备知识,都收集在GitHub JavaEgg ,N线互联网开发必备技能兵器谱,欢迎指导 Redis ...

  9. 三个缓存数据库Redis、Memcache、MongoDB

    >>Memcached Memcached的优点:Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key.value的字节大小以及服务器硬件性能,日常环境 ...

随机推荐

  1. 【bzoj2733】 HNOI2012—永无乡

    http://www.lydsy.com/JudgeOnline/problem.php?id=2733 (题目链接) 题意 给出图上$n$个点,每个点有一个点权,每次询问一个连通块中点权第$K$小的 ...

  2. 【uoj121】 NOI2013—向量内积

    http://uoj.ac/problem/121 (题目链接) 题意 给出${n}$个${d}$维向量,问是否有两个不同的向量的内积是${k}$的倍数. Solution 又卡了一上午常数,我弃了T ...

  3. 【bzoj1078】 SCOI2008—斜堆

    http://www.lydsy.com/JudgeOnline/problem.php?id=1078 (题目链接) 题意 给出一个斜堆,并给出其插入的操作,求一个字典序最小的插入顺序. Solut ...

  4. 遇到问题---java---安装新版本jdk后Failed reading value of registry key

    情况 情况是原本安装有jdk1.7,能正常运行,现在要升级到1.8. 直接在oracle的网站下载1.8安装后修改配置为1.8后: 能用javac编译成功,但java命令运行时报错: Failed r ...

  5. 构建工具----gradle---可能遇到的问题----Could not reserve enough space for object heap

    Could not reserve enough space for object heap 意思是 jvm的设置内存不足以运行gradle命令了. 分为两种情况,解决的方法也不同. .10/user ...

  6. Linux下的wine生活(QQ/微信/Office)

    My wine life like windows 本篇内容涉及QQ.微信.Office在wine中的使用配置. QQ 到deepin下载轻聊版. 如果安装了crossover,那么将其中opt/cx ...

  7. C++ 文本查询2.0(逻辑查询)

    代码实例实现了继承和友元之间的关系,以及为了隐藏实际继承实现,而实现的接口类,代码偏乱,楼主- -自看的(提醒作用) TextQuery.h // // Created by 徐爱东 on 17/7/ ...

  8. Kubernetes之利用prometheus监控K8S集群

    prometheus它是一个主动拉取的数据库,在K8S中应该展示图形的grafana数据实例化要保存下来,使用分布式文件系统加动态PV,但是在本测试环境中使用本地磁盘,安装采集数据的agent使用Da ...

  9. Sentence-seven basic patterns 英语句子结构

    Meaning of some words subject 主语 verb  动词 object 宾语 adverbial 状语 complement 补语 imperative sentence 祈 ...

  10. 关于RESTful的理解

    如何更好的理解RESTful? (转自https://sanwen8.cn/p/54czrEO.html) 在测试开发中,我们经常接触到API,在调用API时候特别是第三方API时候,我们常常陷入以下 ...