• Redis(8)五大数据类型——Hash(哈希)


    可以看做Map集合,key-map! 时候这个值是一个map集合!

    本质和String类型没有太大区别,还是一个简单的 key-vlaue!

    1、插入、获取、查看

    • Hash插入值:HSET KEY FIELD VALUE [FIELD VALUE......]
    • Hash获取值:HGET KEY FIELD
    • Hash批量插入值:HMSET KEY FIELD VALUE [FIELD VALUE......]
    • Hash批量获取值:HMGET KEY FIELD [FIELD......]
    • Hash获取所有的值:HGETALL KEY
    1. 127.0.0.1:6379> hset myhash field1 kuangshen # set一个具体 key-vlaue
    2. (integer) 1
    3. 127.0.0.1:6379> hget myhash field1 # 获取一个字段值
    4. "kuangshen"
    5. 127.0.0.1:6379> hmset myhash field1 hello field2 world # set多个 key-vlaue
    6. OK
    7. 127.0.0.1:6379> hmget myhash field1 field2 # 获取多个字段值
    8. 1) "hello"
    9. 2) "world"
    10. 127.0.0.1:6379> hgetall myhash # 获取全部的数据,
    11. 1) "field1"
    12. 2) "hello"
    13. 3) "field2"
    14. 4) "world"

    2、删除元素

    • Hash删除元素:HDEL KEY FIELD [FIELD......]
    1. 127.0.0.1:6379> HGETALL myHash
    2. 1) "f1"
    3. 2) "v1"
    4. 3) "f2"
    5. 4) "v2"
    6. 5) "f3"
    7. 6) "v3"
    8. 127.0.0.1:6379> HDEL myHash f2 # 删除hash指定key字段!对应的value值也就消失了!
    9. (integer) 1
    10. 127.0.0.1:6379> HGETALL myHash
    11. 1) "f1"
    12. 2) "v1"
    13. 3) "f3"
    14. 4) "v3"

    3、获取元素数量

    • Hash元素的数量获取:HLEN KEY
    1. 127.0.0.1:6379> HGETALL myHash
    2. 1) "f1"
    3. 2) "v1"
    4. 3) "f3"
    5. 4) "v3"
    6. 127.0.0.1:6379> HLEN myHash # 获取hash表的字段数量!
    7. (integer) 2

    4、判断元素存在

    • 判断Hash中元素是否存在:HEXISTS KEY FIELD
    1. 127.0.0.1:6379> HGETALL myHash
    2. 1) "f1"
    3. 2) "v1"
    4. 3) "f3"
    5. 4) "v3"
    6. 127.0.0.1:6379> HEXISTS myHash f1 # 判断hash中指定字段是否存在!
    7. (integer) 1
    8. 127.0.0.1:6379> HEXISTS myHash f6
    9. (integer) 0

    5、获取所有元素,获取所有值

    • 获取Hash中所有元素:HKEYS KEY
    • 获取Hash中所有元素的值:HVALS KEY
    1. # 只获得所有field
    2. # 只获得所有value
    3. 127.0.0.1:6379> HGETALL myHash
    4. 1) "f1"
    5. 2) "v1"
    6. 3) "f3"
    7. 4) "v3"
    8. 127.0.0.1:6379> HKEYS myHash # 只获得所有field
    9. 1) "f1"
    10. 2) "f3"
    11. 127.0.0.1:6379> HVALS myHash # 只获得所有value
    12. 1) "v1"
    13. 2) "v3"

    6、自增、自减

    • Hash中元素自增:HINCRBY KEY FIELD INCREMENT(正数)
    • Hash中元素自减:HINCRBY KEY FIELD INCREMENT(负数)
    1. # incr decr
    2. 127.0.0.1:6379> hset myhash field3 5 #指定增量!
    3. (integer) 1
    4. 127.0.0.1:6379> HINCRBY myhash field3 1 # 自增
    5. (integer) 6
    6. 127.0.0.1:6379> HINCRBY myhash field3 -1 #自减
    7. (integer) 5
    8. 127.0.0.1:6379> hsetnx myhash field4 hello # 如果不存在则可以设置 (integer) 1
    9. 127.0.0.1:6379> hsetnx myhash field4 world # 如果存在则不能设置 (integer) 0

    7、是否存在

    • Hash中元素是否存在:HSETNX KEY FIELD VALUE
    1. 127.0.0.1:6379> HGETALL myHash
    2. 1) "f1"
    3. 2) "v1"
    4. 3) "f2"
    5. 4) "v2"
    6. 5) "f3"
    7. 6) "v3"
    8. 127.0.0.1:6379> HSETNX myHash f4 v4 # 如果不存在则可以设置
    9. (integer) 1
    10. 127.0.0.1:6379> HGETALL myHash
    11. 1) "f1"
    12. 2) "v1"
    13. 3) "f2"
    14. 4) "v2"
    15. 5) "f3"
    16. 6) "v3"
    17. 7) "f4"
    18. 8) "v4"
    19. 127.0.0.1:6379> HSETNX myHash f1 v99 # 如果存在则不能设置
    20. (integer) 0
    21. 127.0.0.1:6379> HSETNX myHash f1 v1
    22. (integer) 0

    总结

    • hash变更的数据 user name age,尤其是是用户信息之类的,经常变动的信息!

    • hash 更适合于对象的 存储

    • String更加适合字符串存储!

  • 相关阅读:
    【Hack The Box】linux练习-- Writer
    【数据库原理与应用】数据库应用实例— 教学管理系统
    网络业务创新驱动下的DPU P4技术,中科驭数在网络开源技术生态大会上分享最新进展
    【大数据】Flink 内存管理(二):JobManager 内存分配(含实际计算案例)
    快速排序算法
    [OpenCv]初识——图像的基本处理
    JQuery笔记
    MFC对话框增加快捷键
    SDUT—Python程序设计实验10&11(面向对象)
    机器人EV3初级、中级、高级课程课件
  • 原文地址:https://blog.csdn.net/weixin_48560325/article/details/126415082