一: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. 【转】64位Ubuntu 16.04搭建嵌入式交叉编译环境arm-linux-gcc过程图解

    64位Ubuntu 16.04搭建嵌入式交叉编译环境arm-linux-gcc过程图解,开发裸机环境之前需要先搭建其开发环境,毕竟工欲善其事必先利其器嘛.  安装步骤 1.准备工具安装目录 下载 ar ...

  2. 遇到问题---java---@value注解为null

    Spring 3支持@value注解的方式获取properties文件中的配置值,大简化了读取配置文件的代码. 在xml文件中配置properties文件 例如 cas.authn.mongo.col ...

  3. 解决SurfaceView调用setZOrderOnTop(true)遮挡其他控件

    解决SurfaceView调用setZOrderOnTop(true)遮挡其他控件的问题 http://marller.blog.51cto.com/8699646/1762028 FAQ: Surf ...

  4. LigerUI下拉选择列表LigerComboBox中tree的节点初始化默认选中的问题

    问题描述 用后台的Json传送tree的数据 前端用js方法来控制选中节点 此方法存在bug 实例: bug问题:无论设置的默认选中值是多少个,前台checkbox最多只显示选中一个,但是内容框中显示 ...

  5. unity抗锯齿(Antialiasing)

    目前知道的有两种方式,下面依次介绍 一.系统菜单设置法. 这样只能简单去锯齿,要想效果特别明显,看下面的脚本吧. 二.为摄像机挂上一个去锯齿的系统脚本 导入后Assets资源下多了一个包 找到这个脚本 ...

  6. List保存在ViewState

    private List<SYSUAO> UserRoleList { get { return ViewState["UserRoleList"] as List&l ...

  7. 修改home下的中文目录为英文目录

    原文地址:http://blog.csdn.net/esonbest1234/article/details/50729582 习惯问题,喜欢使用fedora为您在home目录下自创建的“桌面”.“文 ...

  8. 2008ZJOI树的统计

    codevs 2460 树的统计 http://codevs.cn/problem/2460/ 2008年省队选拔赛浙江  题目等级 : 大师 Master   题目描述 Description 一棵 ...

  9. 已经菜到不行了 PAT 1010. Radix (25)

    https://www.patest.cn/contests/pat-a-practise/1010 题目大意: 输入四个数字,a,b,c,d. a和b是两个数字,c=1表示是第一个数字,c=2表示是 ...

  10. Git之初始化及提交操作

    Git 的配置文件有三个: Git 把管理的文件分为了两个区域四个状态: 工作区: 当前开发程序所在目录称为工作区,该区域的文件会有状态的变化且状态由 git自动检测,程序中文件做任何操作(增.删.改 ...