Redis 的字典是无序字典。Redis 的字典的值只能是字符串,当 hash 移除了最后一个元素之后,该数据结构自动被删除,内存被回收。

hash 结构也可以用来存储用户信息,不同于字符串一次性需要全部序列化整个对象,hash 可以对用户结构中的每个字段单独存储。这样当我们需要获取用户信息时可以进行部分获取。而以整个字符串的形式去保存用户信息的话就只能一次性全部读取,这样就会比较浪费网络流量。

hash 也有缺点,hash 结构的存储消耗要高于单个字符串,到底该使用 hash 还是字符串,需要根据实际情况再三权衡。

1. hash 类型相关命令

命令 说明
hset key field value 设置hash里面一个字段的值
hget key field 获取hash中field的值
hexists key field 判断field是否存在hash中
hgetall key 从hash中读取全部的域和值
hkeys key 获取hash 中所有field
hvals key 获取hash的所有值
hlen key 获取hash中所有字段的数量
hdel key field[field…] 删除一个或多个hash的field
hmget key field[field…] 获取hash里面指定字段的值
hmset key field[field…] 设置hash字段值
hsetnx key field value 设置hash的一个字段,只有这个字段不存在是有效
hstrlen key field 获取hash里面指定field的长度(Redis 版本>= 3.2.0)
hscan key cursor 迭代hash里面的元素
hincrby key field increment 将hash中指定域的值增加给定的值
hincrbyfloat key field increment 将hash中指定域的值增加给定的浮点数

2. 使用示例

127.0.0.1:6379> hset student name "jack"
(integer) 1
127.0.0.1:6379> hget student name
"jack"
127.0.0.1:6379> hexists student name
(integer) 1
127.0.0.1:6379> hexists student gender
(integer) 0
127.0.0.1:6379> hset student gender "male"
(integer) 1
127.0.0.1:6379> hgetall student
1) "name"
2) "jack"
3) "gender"
4) "male"
127.0.0.1:6379> hkeys student
1) "name"
2) "gender"
127.0.0.1:6379> hvalues student
(error) ERR unknown command 'hvalues'
127.0.0.1:6379> hvals student
1) "jack"
2) "male"
127.0.0.1:6379> hlen student
(integer) 2
127.0.0.1:6379> hmget student name gender
1) "jack"
2) "male"
127.0.0.1:6379> hmset student grade 90 country "USA"
OK
127.0.0.1:6379> hmget student name grade gender country
1) "jack"
2) "90"
3) "male"
4) "USA"
127.0.0.1:6379> hdel student country
(integer) 1
127.0.0.1:6379> hgetall student
1) "name"
2) "jack"
3) "gender"
4) "male"
5) "grade"
6) "90"
127.0.0.1:6379>
127.0.0.1:6379> hmset student grade 90 country "USA"
OK
127.0.0.1:6379> hgetall
(error) ERR wrong number of arguments for 'hgetall' command
127.0.0.1:6379> hgetall student
1) "grade"
2) "90"
3) "country"
4) "USA"
127.0.0.1:6379> hstrlen student grade
(integer) 2
127.0.0.1:6379> hstrlen student country
(integer) 3
127.0.0.1:6379>
127.0.0.1:6379> hgetall student
1) "grade"
2) "90"
3) "country"
4) "USA"
127.0.0.1:6379> hincrby student grade 5
(integer) 95
127.0.0.1:6379> hgetall student
1) "grade"
2) "95"
3) "country"
4) "USA"
127.0.0.1:6379>

Redis 笔记(05)— hash 类型(设置获取单个hash值、判断hash键是否存在、设置获取多个hash值、获取所有hash的键、获取所有hash的值、删除hash指定键)相关推荐

  1. php 数组移除指定健,php删除数组指定键的方法

    php删除数组指定键的方法:首先创建一个PHP代码示例文件:然后定义一个"array_remove"方法:最后利用"array_key_exists".&quo ...

  2. 笔记05 局部类型

    一:局部类型 1. 局部类型 C# 2.0 引入了局部类型的概念.局部类型允许我们将一个类.结构或接口分成几个部分,分别实现在几个不同的.cs文件中. 局部类型适用于以下情况: (1) 类型特别大,不 ...

  3. Redis 笔记(04)— list类型(作为消息队列使用、在列表头部添加元素、尾部删除元素、查看列表长度、遍历指定列表区间元素、获取指定区间列表元素、阻塞式获取列表元素)

    Redis 的列表是链表而不是数组.这意味着 list 的插入和删除操作非常快,时间复杂度为 O(1),但是索引定位很慢,时间复杂度为 O(n). 当列表弹出了最后一个元素之后,该数据结构自动被删除, ...

  4. Redis工作笔记-Hash类型

    目录 概述 操作 概述 Redis中的Hash类型看成具有String Key和String Value的map容器.所以该类型非常适合于存储键值对象的信息.如Username.Password和Ag ...

  5. Redis 笔记(07)— sorted set 类型(添加、删除有序集合元素、获取分数范围内成员、按score排序、返回集合元素个数)

    zset 可能是 Redis 提供的最为特色的数据结构,一方面它是一个 set,保证了内部 value 的唯一性,另一方面它可以给每个 value 赋予一个 score,代表这个 value 的排序权 ...

  6. 获取url中的参数方法,避免#的干扰,删除url指定参数(vue hash模式 有#删除指定参数问题)

    function urlParse() {let url = window.location.search;let obj = {};let reg = /[?&][^?&]+=[^? ...

  7. zset获取指定score_7、Redis中对ZSet类型的操作命令

    写在前面的话:读书破万卷,编码如有神 -------------------------------------------------------------------- ------------ ...

  8. 02_NoSQL数据库之Redis数据库:string类型和hash类型

     Strings类型及操作 String是最简单的类型,一个key对应一个Value,String类型是二进制安全的.Redis的String可以包含任何数据,比如jpg图片或者序列化的对象. S ...

  9. Redis学习第三课:Redis Hash类型及操作

    Redis hash是一个string类型的field和value的映射表.它的添加.删除操作都是O(1)(平均).hash特别适用于存储对象.相较于对象的每个字段存在单个string类型.将一个对象 ...

最新文章

  1. CCSP-防火墙学习笔记第6章
  2. linux 多进程 多线程的选择
  3. Yii调用参数配置文件params
  4. 基于 DataLakeAnalytics 做跨地域的数据分析
  5. acrgis api for javaScript需要对Dojo了解多少?
  6. 简述python是怎么处理异常的-Python异常处理知识点总结
  7. php辅助框架,【PHP开发框架】Laravel框架中辅助函数:optional ()函数的介绍
  8. cgroups(7)— Linux中文手册页
  9. 嵌入式专业名词整理(以后会不断完善)
  10. 若依可以商用吗_商用自动炒菜机Qamp;A,你想知道的都在这里!
  11. 数学建模十大经典算法和常用算法
  12. Java生成数据字典word文件
  13. 清华钱颖一:什么造就了硅谷奇迹?这7个因素不可忽视
  14. 纯css实现3D立体六面体照片墙
  15. LED软模组圆弧屏、弧形屏、柔性软屏、创意LED显示屏案例
  16. ie11不兼容window.createPopup的问题解决
  17. iOS APP调取短信 发送消息给其他人
  18. html5游戏防止作弊,html5 canvas模拟的小球躲避小游戏
  19. java中常用的工具类
  20. 易优cms uiarclist 文档列表可视化标签

热门文章

  1. 2022-2028年中国康养旅游行业市场竞争力分析及发展策略分析报告
  2. 2021-2027年中国智能家居设备行业市场前瞻与投资策略规划报告
  3. Docker入门六部曲——基本引导
  4. 消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法
  5. 数据结构(02)— 时间复杂度与空间复杂度转换
  6. 3分钟4 步快速带你在win10电脑装上openCV3.4 (python使用)
  7. python中的新式类与旧式类的一些基于descriptor的概念(上)
  8. How does SGD weight_decay work?
  9. MindInsight训练可视整体设计介绍
  10. YOLOv5目标检测源码重磅发布了!