• 【Redis】hash数据类型-常用命令


    前置知识

    redis自身就是键值对结构了,哈希类型是指值本⾝⼜是⼀个键值对结构,形如key="key",value={{field1,value1},...,{fieldN,valueN}}

    字符串和哈希类型对⽐

    image-20231021164500828

    哈希类型中的映射关系通常称为field-value,⽤于区分Redis整体的键值对(key-value),注意这⾥的value是指field对应的值,不是键(key)对应的值,注意value在不同上下⽂的作⽤


    常用命令

    HSET

    设置hash中指定的字段(field)的值(value)

    语法:HSET key field value [field value ...] 
    
    • 1

    时间复杂度:插⼊⼀组field为O(1),插⼊N组field为O(N) 返回值:添加成功的字段(filed-value)的个数

    image-20231023114003405

    HGET

    获取hash中指定字段的值

    语法:HGET key field 
    
    • 1

    返回值:字段对应的值或者nil

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


    HEXISTS

    判断hash中是否有指定的字段

    语法:HEXISTS key field 	
    
    • 1

    返回值:1表⽰存在,0表⽰不存在

    image-20231023114041084


    HDEL

    删除hash中指定的字段

    语法:HDEL key field [field ...]
    
    • 1

    时间复杂度:删除⼀个元素为O(1).删除N个元素为O(N) 返回值:本次操作删除的字段个数

    image-20231023114223197

    注意:del删除的是key,hdel删除的是key当中的field字段


    HKEYS

    获取hash中的所有字段

    语法:HKEYS key 
    
    • 1

    时间复杂度:O(N),N为field的个数(先根据key找到对应的hash,然后再遍历hash => 有一定的风险,因为不知道某个hash当中是否会存在大量的field) 返回值:字段列表

    image-20231023114244638


    HVALS

    获取hash中的所有的值

    语法:HVALS key 
    
    • 1

    时间复杂度:O(N),N为field的个数 返回值:所有的值

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


    HGETALL

    获取hash中的所有字段以及对应的值

    语法:HGETALL key
    
    • 1

    时间复杂度:O(N),N为field的个数 返回值:字段和对应的值

    image-20231023183458208


    HMGET

    ⼀次获取hash中多个字段的值

    语法: HMGET key field [field ...] 
    
    • 1

    时间复杂度:只查询⼀个元素为O(1),查询多个元素为O(N),N为查询元素个数 返回值:字段对应的值或者nil


    注意:在使⽤HGETALL时,如果哈希元素个数⽐较多,会存在阻塞Redis的可能。如果开发⼈员只需要获取部分field,可以使⽤HMGET,如果⼀定要获取全部field,可以尝试使⽤HSCAN命令,该命令采⽤渐进式遍历哈希类型 =>敲一次命令遍历一小部分,返回下一次从哪个位置开始遍历,连续执行多次就可以完成整个遍历过程,此时时间就是可控的,不会阻塞redis服务器

    image-20231023183741765

    此时返回的多个value的顺序和field的顺序是匹配的


    关于HMSET

    其实有HMSET进行一次设置多个field和value,但是并不需要,因为hset已经支持一次设置多个field和value了


    HLEN

    获取hash中的所有字段的个数

    语法:LEN key 
    
    • 1

    时间复杂度:O(1) 返回值:字段个数

    image-20231023183634248


    HSETNX

    在字段(field)不存在的情况下,设置hash中的字段和值,如果存在,则失败

    语法:HSETNX key field value 
    
    • 1

    返回值:1表⽰设置成功,0表⽰失败 时间复杂度:O(1)

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


    HINCRBY

    将hash中字段对应的数值添加指定的值

    语法:HINCRBY key field increment   #increment只能是整数(正数  负数  0),但是不能是浮点数
    
    • 1

    返回值:该字段变化之后的值 时间复杂度:O(1)

    image-20231023183836478

    HINCRBYFLOAT

    语法:HINCRBYFLOAT key field increment			本质是HINCRBY的浮点数版本
    
    • 1

    返回值:该字段变化之后的值 时间复杂度:O(1)

    image-20231023183957316


    命令小结

    image-20231021165557738

  • 相关阅读:
    基于PHP的在线英语学习平台
    OpenCV开发笔记(七十六):相机标定(一):识别棋盘并绘制角点
    浅谈 React 与 Vue 更新机制的差异
    springboot+基于web的传染病信息管理系统的设计与实现 毕业设计-附源码221124
    使用WebApi+Vue3从0到1搭建《权限管理系统》:二、搭建JWT系统鉴权
    docker 笔记5:redis 集群分布式存储案例
    解决SpringMVC在JSP页面取不到ModelAndView中数据
    PyTorch模型训练集正常收敛,但验证集准确率稳定在10%并保持不变
    windows定制ISO-可安装
    【万字长文】前端性能优化实践 | 京东云技术团队
  • 原文地址:https://blog.csdn.net/chuxinchangcun/article/details/134211105