• 【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

  • 相关阅读:
    麒麟系统开发笔记(五):制作安装麒麟系统的启动U盘、物理机安装麒麟系统以及搭建Qt开发环境
    asp.net core把所有接口和实现类批量注入到容器
    刷题学习记录BUUCTF
    slice扩容机制分析
    AndroidStudio gradle 7.0+配置说明
    2022“杭电杯”中国大学生算法设计超级联赛(6)签到题5题
    氟化钙光学窗口保护镜片 光学元件红外测温窗口保护片
    ChatGPT的增长已经进入了瓶颈期
    系统移植--前言
    解决 “编译需要TBBConfig.cmake,但TBB 2020及older版本不生成.cmake文件”的问题
  • 原文地址:https://blog.csdn.net/chuxinchangcun/article/details/134211105