一: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. 【BZOJ4869】【SHOI2017】相逢是问候

    Description BZOJ传送门 Solution 这题涉及到指数嵌套堆叠,可能可以用欧拉函数解决. 试想一个数\(a_i\)经过\(k\)次操作后会变成什么? \[ k个c\;\; \begi ...

  2. 域hash值破解的总结经验

    1.vsssown.vbs拷贝域数据库: 1.1上传vssown.vbs文件 上传cscript.exe和vssown.vbs到域服务器上 1.2创建快照 reg query HKEY_LOCAL_M ...

  3. 《Linux内核设计与实现》第17章读书笔记

    第十七章  设备与模块 一.四种内核成分 设备类型:在所有 Unix 系统中为了统一普通设备的操作所采用的分类. 模块: Linux 内核中用于按需加载和卸载目标码的机制. 内核对象:内核数据结构中支 ...

  4. mybatis.5.动态SQL

    1.动态SQL,解决关联sql字符串的问题,mybatis的动态sql基于OGNL表达式 if语句,在DeptMapper.xml增加如下语句; <select id="selectB ...

  5. Java的基本类型

    基本数据类型的加载和存储 极客时间深入理解Java虚拟机读后感,有错误还请指正 虚拟机中的Boolean类型 在Java语言规范中,boolean类型的值只有两种可能,那就是"true&qu ...

  6. Lnmp上安装Yaf学习(二)

    上一节主要实践了在Lnmp上安装Yaf扩展,那么这一节将测试 Yaf 的一个简单demo的运行. 一.通过Lnmp 创建 vhost 文件 [root@localhost yaf-3.0.6]# ln ...

  7. lumen 使用 laravel-cors 的时候, 使用 dd 函数的解决方法

    if (! function_exists('dd')) { /** * Dump the passed variables and end the script. * * @param mixed ...

  8. micro 架构组件介绍

    Micro 是什么 Micro 是微服务生态系统中专注于提供产品.服务和解决方案的一款软件,使得在现代软件企业中起到创新驱动.它计划是可以将任何微服务相关的资源与即将使用此款软件的公司结合起来,利用此 ...

  9. ASP.NET IOC之 AutoFac的认识和结合MVC的使用

    这几天研究了解发现AutoFac是个牛X的IOC容器,是.NET领域比较流行的IOC框架之一,传说是速度最快的,~ 据相关资料,相关学习,和认知,遂做了一些整理 优点: 它是C#语言联系很紧密,也就是 ...

  10. Linux命令-xargs

    比如一个例子 echo "README.md" |cat echo "README.md" |xargs cat 第一个例子只是输出了README.md的文件名 ...