文章目录

  • hash类型简介
  • 添加命令
    • 查询命令
    • 删除命令
  • 应用场景

hash类型简介

redis中的哈希(hash或者散列表),内部存储很多键值对以key - [Field-Value]的形式存储,也是一种数组+链表的二维结构(本身又是一个 键值对结构)。正是因为这样,通常我们可以使用哈希存储一个对象信息。redis中每个 hash 可以存储 232 - 1 键值对(40多亿)

添加命令

  1. hset key field value
    将哈希表key中的字段的值设为value,不存在则创建设置,否则将覆盖旧值;如果哈希表中字段已经存在且旧值已被新值覆盖,返回0而不是1。

    127.0.0.1:6379> hset student name zhangsan
    (integer) 1
    127.0.0.1:6379> hgetall student
    1) "name"
    2) "zhangsan"
    
  2. hmset key field value [field value ...]
    一次将多个field-value数据设置进哈希表中,表中已存在的字段会直接覆盖。若哈希表已存在字段值,重复设置将会返回OK,而不是0。

    127.0.0.1:6379> hmset student age 18 hobby playgame
    OK
    127.0.0.1:6379> hgetall student
    1) "name"
    2) "zhangsan"
    3) "age"
    4) "18"
    5) "hobby"
    6) "playgame"
    
  3. hsetnx key field value
    仅当哈希表中字段不存在时可设置,否则无效。若设置的字段已存在值,那么当前操作将返回结果集为0而不是OK

    //字段name已经存在,所以返回0
    127.0.0.1:6379> hsetnx student name lisi
    (integer) 0
    127.0.0.1:6379> hsetnx student sex man
    (integer) 1
    127.0.0.1:6379> hgetall student
    1) "name"
    2) "zhangsan"
    3) "age"
    4) "18"
    5) "hobby"
    6) "playgame"
    7) "sex"
    8) "man"
    
  4. hincrby key field increment
    给哈希表中指定字段增加数值,执行hincrby命令后返回的是字段的最新值,而不是ok或者1。

    //年龄+1
    127.0.0.1:6379> hincrby student age 1
    (integer) 19
    127.0.0.1:6379> hgetall student
    1) "name"
    2) "zhangsan"
    3) "age"
    4) "19"
    5) "hobby"
    6) "playgame"
    7) "sex"
    8) "man"
    

查询命令

  1. hget key field
    获取哈希表key中给定字段的值,不存在返回nil

    127.0.0.1:6379> hget student name
    "zhangsan"
    
  2. hgetall key
    获取哈希表key中的所有字段和值,不存在返回空列表

    127.0.0.1:6379> hgetall student
    1) "name"
    2) "zhangsan"
    3) "age"
    4) "19"
    5) "hobby"
    6) "playgame"
    7) "sex"
    8) "man"
    
  3. hlen key
    获取哈希表key中field的数量,不存在返回0

    127.0.0.1:6379> hlen student
    (integer) 4
    
  4. hmget key field [field ...]
    获取哈希表key中一个或多个给定字段的值,不存在返回nil

    127.0.0.1:6379> hmget student name age
    1) "zhangsan"
    2) "19"
    
  5. hkeys key
    获取哈希表key中所有字段的键,不存在返回空表

    127.0.0.1:6379> hkeys student
    1) "name"
    2) "age"
    3) "hobby"
    4) "sex"
    
  6. hscan key cursor [MATCH pattern] [COUNT count]
    迭代哈希表中的键值对。
    cursor:游标,HSCAN 命令每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 HSCAN 命令的游标参数, 以此来延续之前的迭代过程。当 SCAN 命令的游标参数被设置为 0 时, 服务器将开始一次新的迭代, 而当服务器向用户返回值为 0 的游标时, 表示迭代已结束

    MATCH pattern:匹配的模式,和 KEYS 命令一样, 增量式迭代命令也可以通过提供一个 glob 风格的模式参数, 让命令只返回和给定模式相匹配的元素, 这一点可以通过在执行增量式迭代命令时, 通过给定 MATCH 参数来实现

    count:指定从数据集里返回多少元素,默认值为 10 。虽然增量式迭代命令不保证每次迭代所返回的元素数量, 但我们可以使用 COUNT 选项, 对命令的行为进行一定程度上的调整。 基本上, COUNT 选项的作用就是让用户告知迭代命令, 在每次迭代中应该从数据集里返回多少元素

    127.0.0.1:6379> hscan student 0 match *a* count 2
    1) "0"
    2) 1) "name"2) "zhangsan"3) "age"4) "19"
    
  7. hvals key
    获取哈希表key中所有字段的值,不存在返回空表

    127.0.0.1:6379> hvals student
    1) "zhangsan"
    2) "19"
    3) "playgame"
    4) "man"
    
  8. hexists key field
    获取哈希表key中field是否存在,存在返回1不存在返回0

    127.0.0.1:6379> hexists student name
    (integer) 1
    127.0.0.1:6379> hexists student class
    (integer) 0
    
  9. hstrlen key field
    获取哈希表key中字段长度,不存在返回0,否则返回长度整数

    127.0.0.1:6379> hstrlen student name
    (integer) 8
    

删除命令

  1. hdel key field [field ...]
    删除哈希表中一个或多个字段,不存在则忽略,删除操作返回值是删除成功的数量,不存在的字段将被忽略

    //class键不存在,所以返回2
    127.0.0.1:6379> hdel student hobby sex class
    (integer) 2
    127.0.0.1:6379> hkeys student
    1) "name"
    2) "age"
    

应用场景

  1. 购物车:hset key field value命令, 可以实现以用户Id,商品Id为field,商品数量为value,恰好构成了购物车的3个要素
  2. 存储对象:hash类型的(key, field, value)的结构与对象的(对象id, 属性, 值)的结构相似,也可以用来存储对象。

redis的hash数据类型相关命令介绍及使用相关推荐

  1. redis的String数据类型相关命令介绍及使用

    文章目录 字符串命令 存值相关(set) 取值相关(get) 数值操作命令 加操作 减操作 BIT位操作命令 应用场景 字符串命令 存值相关(set) set key value 例如 set age ...

  2. redis的set数据类型相关命令介绍及使用

    文章目录 set简介 添加命令 查询命令 移动/删除命令 集合运算命令 差集运算 交集运算 并集运算 应用场景 set简介 redis集合set类型和list列表类型类似,都可以用来存储多个字符串元素 ...

  3. redis的list数据类型相关命令介绍及使用

    文章目录 list列表简介 常用命令 添加命令 查询命令 弹出/删除命令 修改命令 阻塞弹出命令 应用场景 list列表简介 list是简单的字符串列表(说通俗点,存储的还是字符串),按照插入顺序排序 ...

  4. redis有序集合sorted set(zset)数据类型相关命令介绍及使用

    文章目录 简介 添加命令 查询命令 递增类型 递减类型 删除命令 运算命令 skiplist 简介 Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员.不同的是每个元 ...

  5. 解析Redis操作五大数据类型常用命令

    摘要:分享经常用到一些命令和使用场景总结,以及对Redis中五大数据类型如何使用cmd命令行的形式进行操作的方法. 本文分享自华为云社区<Redis操作五大数据类型常用命令解析>,作者:灰 ...

  6. Linux安全关机命令以及相关命令介绍

    Linux安全关机命令以及相关命令介绍 致新手运维师 作为一名Linux运维师,应该明白Linux服务器运行时关机的正确方法,有助于我们在工作的时候不至于造成一些必要的损失.当然,Linux服务器作为 ...

  7. java hmget 最大值,【Redis】基本数据类型及命令操作(超详细)

    一.String 可以直接看每一大节的命令示例部分,敲一遍就大体会了 1.1 概述 字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数 ...

  8. Redis 几种数据类型的详细介绍

    文章目录 概述 Keys Strings Lists Hashes Sets Sorted sets Bitmaps HyperLogLogs 原文: https://redis.io/topics/ ...

  9. Redis五种数据类型及命令(一)

    Redis 五种数据类型详解及命令 Redis五种数据类型分别为: String:最基本的字符串类型. list:列表(如果对比java来看,这个list不是ArrayList,而是LinkedLis ...

最新文章

  1. Android Touch事件传递机制 二:单纯的(伪生命周期) 这个清楚一点
  2. Keil5 STM32F系列 安装 安装包
  3. delphi 插入表格HTML代码
  4. ES6入门之对象扩展
  5. 【PhotoScan精品教程】任务一:新建工程、导入照片、设置坐标系、导入控制点(POS)、自由空三
  6. [Quatsch]Quantum Or Optics
  7. 大华管理平台用户名_智能财务引领商业与管理变革——浙大EMBA首席财务官研习社走进大华股份...
  8. 阿里云助力宁波市教育局“甬上云校”停课不停学
  9. 引用类型和原始类型的对比(java)
  10. java awt 边距_Java Swing - 使用Line Border在TextArea上设置边距
  11. NYOJ--218--Dinner(含题目意思)
  12. Codeforces 875C National Property(拓扑排序)
  13. 求出0~999之间的所有“水仙花数”并输出。“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身
  14. Uploading SSH public key ... failed!
  15. jquery实现简单的滑动解锁
  16. pcs7服务器一直显示在同步,【征文】PCS7 诡异的时间同步问题
  17. 用C语言写烟花,给心中的那个人看!
  18. Digester 解析遇到字符失败
  19. pageadmin 网站建设教程:如何添加自定义页面
  20. Java获得指定时区时间

热门文章

  1. Android Q 基站刷新接口源码分析 适配双卡手机基站刷新逻辑
  2. python实现线性回归和逻辑回归
  3. 跳跃表的原理和实现以及应用
  4. IceRiver引领数字货币挖矿新时代:KAS专用矿机冰河KS1震撼发布!
  5. 叮~2021 CSDN年度报告已出炉;私信新增拉黑功能;创作助手支持错别字检测……【2021.12.29】
  6. 求二叉树深度算法(深度优先、广度优先)
  7. 解决IDEA中文字体大小不一
  8. 电脑中了勒索病毒怎么解决,Windows系统被faust勒索病毒攻击了怎么办?
  9. 土肥圆的并行学习日记
  10. 手把手教你Nginx常用模块详解之ngx_http_rewrite_module(十)