一.简介

  • Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。 可以看成一个map容器
  • Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)
  • 。该类型的数据仅占用很少的磁盘空间(相比于JSON)

二.命令

问题:有一个人叫小明,他的信息如下,现在想要把他的信息存在redis中:

  • 姓名:xiaoming
  • 年龄:21
  • 性别:男
  • 学校:bupt

赋值语法:

HSET KEY  FIELD  VALUE
--为指定的KEY,设定FILD/VALUE  HMSET  KEY  FIELD VALUE [FIELD1,VALUE1]
--同时将多个 field-value (域-值)对设置到哈希表 key 中

此处我们使用第二个语句,将这四个字段写入进student:1这个hash(一个map)

127.0.0.1:6379> hmset student:1 name xiaoming age 22 sex male school bupt
OK

取值语法:

HGET KEY FIELD   //获取存储在HASH中的值,根据FIELD得到VALUEHMGET key field[field1]      //获取key所有给定字段的值 HGETALL key                 //返回HASH表中所有的字段和值 HKEYS key   //获取所有哈希表中的字段HLEN key   //获取哈希表中字段的数量

假如我现在要获取小明的学校信息:

127.0.0.1:6379> hmget student:1 school
1) "bupt"

删除语法:

HDEL KEY field1[field2]    //删除一个或多个HASH表字段

其他语法:

HSETNX key field value
//只有在字段 field 不存在时,设置哈希表字段的值HINCRBY key field increment
//为哈希表 key 中的指定字段的整数值加上增量 increment 。HINCRBYFLOAT key field increment
//为哈希表 key 中的指定字段的浮点数值加上增量 increment 。HEXISTS key field
//查看哈希表 key 中,指定的字段是否存在

例如现在想要把小明的年龄加十岁:

127.0.0.1:6379> Hincrby student:1 age 10
(integer) 32
127.0.0.1:6379> hmget student:1 age
1) "32"

三.应用场景:

Hash的应用场景:(存储一个用户信息对象数据)

  • 常用于存储一个对象
  • 为什么不用string存储一个对象?

hash是最接近关系数据库结构的数据类型,可以将数据库一条记录或程序中一个对象转换成hashmap存放在redis中。

用户ID为查找的key,存储的value用户对象包含姓名,年龄,生日等信息,如果用普通的key/value结构来存储,主要有以下2种存储方式:

  • 将用户ID作为查找key,把其他信息封装成一个对象以序列化的方式存储,这种方式的缺点是,增加了序列化/反序列化的开销,并且在需要修改其中一项信息时,需要把整个对象取回,并且修改操作需要对并发进行保护,引入CAS等复杂问题
  • 这个用户信息对象有多少成员就存成多少个key-value对,用用户ID+对应属性的名称作为唯一标识来取得对应属性的值,虽然省去了序列化开销和并发问题,但是用户ID为重复存储,如果存在大量这样的数据,内存浪费还是非常可观的

Redis提供的Hash很好的解决了这个问题,Redis的Hash实际是内部存储的Value为一个HashMap,并提供了直接存取这个Map成员的接口

Redis数据库中Hash哈希的介绍,常用命令和应用场景相关推荐

  1. redis hash key mysql_Linux取得Redis数据库中hash类型的所有feild或者所有value

    redis非常好用,但是对于习惯了关系型数据库的人来说,查询起来还是比较麻烦,尤其是对于一个hash类型的key,想取得所有的feild域 Redis非常好用,但是对于习惯了关系型数据库的人来说,查询 ...

  2. linux hase数据,Linux取得Redis数据库中hash类型的所有feild或者所有value

    Redis非常好用,但是对于习惯了关系型数据库的人来说,查询起来还是比较麻烦,尤其是对于一个hash类型的key,想取得所有的feild域,官方并没有直接的接口,但可以通过linux来帮助实现,方法如 ...

  3. linux取得redis数据库中hash类型的所有feild或者所有value

    redis非常好用,但是对于习惯了关系型数据库的人来说,查询起来还是比较麻烦,尤其是对于一个hash类型的key,想取得所有的feild域,官方并没有直接的接口,但可以通过linux来帮助实现,方法如 ...

  4. redis 中 Hash哈希介绍 及常用命令 (附有示例)

    目录 一.Redis中Hash介绍 二.常用命令 三.示例 hset hget hmset   .. hexists hkeys hvals hincrbu hsetnx 四.redis中Hash底层 ...

  5. 批量删除Redis数据库中的Key

    批量删除Key Redis 中有删除单个 Key 的指令 DEL,但好像没有批量删除 Key 的指令,不过我们可以借助 Linux 的 xargs 指令来完成这个动作 redis-cli keys & ...

  6. 数据库中索引(index)介绍

    本文主要介绍数据库中索引(index)的相关知识. 1 概述 1.1 What 数据库中的索引(index),是数据库管理系统(DBMS)中的一个排序的数据结构,用于协助快速查询.更新数据库表中的数据 ...

  7. 数据库中sum的详细用法介绍

    转自:微点阅读  https://www.weidianyuedu.com 数据库中sum的用法的用法你知道吗?下面微点阅读小编就跟你们详细介绍下数据库中sum的用法的用法,希望对你们有用. 数据库中 ...

  8. 达梦数据库中字符和字节的介绍

    参数简介 在使用DMINIT初始化数据库的时候,我们有以下这两个跟字符集有关的参数,UNICODE_FLAG和LENGTH_IN_CHAR. UNICODE_FALG : 此参数表示了数据库中所有数据 ...

  9. redis中list类型详解及常用命令

    redis中的list类型有点类似于编程语言中的数组,list类型如下图所示,实际上是一种双向链表结构,通过lpush.lpop.rpush.rpop这几个命令来控制链表中数据出入,所以list类型可 ...

最新文章

  1. android viewpager嵌套侧滑删除listview冲突问题
  2. c# oldb连接_C#使用ODBC与OLEDB连接数据库的方法示例
  3. mysql 集群备份脚本_MysqlBackup
  4. how to debug connector indexing
  5. 文件包含——apache日志文件包含shell(四)
  6. 活动目录服务器(windows server 2008)
  7. C#LeetCode刷题之#641-设计循环双端队列(Design Circular Deque)
  8. ei拼音的四个声调对应的字_非常容易混淆的汉语拼音“er”,究竟特殊在哪里?孩子总是搞不懂...
  9. SparkStreaming之transform
  10. Apache下的配置文件httpd.conf、httpd-vhosts.conf 转
  11. 开电视显示网管服务器数据下发超时,关于网络管理中的常见问题解决
  12. openai-gpt_GPT-3是“人类”吗?
  13. 尚硅谷宋红康JVM资料笔记1 --- JVM与Java体系结构
  14. 京瓷1125打印机清零_京瓷1125驱动下载
  15. AcrelEMS-IDC综合能效管理系统 XXX数据中心案例分享
  16. mysql lob字段_数据库的LOB大字段的一些总结
  17. php jquery 时间轴,关于jQuery插件Timelinr 实现时间轴特效
  18. 关于matlab好文推荐
  19. python语言的变量_自兴人工智能------Python语言的变量认识及操作
  20. 高等数学之极限的原理及易错题计算

热门文章

  1. javascript显示本地服务器图片,JavaScript图片本地预览功能的实现方法
  2. 蜂巢3.0(原 素材管理器)开发笔记
  3. JSHTMLCSS实现双色球抽奖
  4. strtoupper() 把字符串转换为大写字母
  5. SpringBoot项目在使用Maven打包war中遇到的问题
  6. 2021-02-10
  7. 2021年全球与中国天然气和石油钻头行业市场规模及发展前景分析
  8. caffe入门学习:caffe.Classifier的使用
  9. CHROME扩展笔记之设置代理(项目完成再上完整案例)
  10. 2022 年项目经理薪酬趋势:找工作就这么谈