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

文章目录

  • 前置知识
  • 常用命令
    • HSET
    • HGET
    • HEXISTS
    • HDEL
    • HKEYS
    • HVALS
    • HGETALL
    • HMGET
    • 关于HMSET
    • HLEN
    • HSETNX
    • HINCRBY
    • HINCRBYFLOAT
  • 命令小结

前置知识

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

字符串和哈希类型对⽐

【Redis】hash数据类型-常用命令_第1张图片

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


常用命令

HSET

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

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

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

【Redis】hash数据类型-常用命令_第2张图片

HGET

获取hash中指定字段的值

语法:HGET key field 

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

【Redis】hash数据类型-常用命令_第3张图片


HEXISTS

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

语法:HEXISTS key field 	

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

【Redis】hash数据类型-常用命令_第4张图片


HDEL

删除hash中指定的字段

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

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

image-20231023114223197

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


HKEYS

获取hash中的所有字段

语法:HKEYS key 

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

【Redis】hash数据类型-常用命令_第5张图片


HVALS

获取hash中的所有的值

语法:HVALS key 

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

【Redis】hash数据类型-常用命令_第6张图片


HGETALL

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

语法:HGETALL key

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

【Redis】hash数据类型-常用命令_第7张图片


HMGET

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

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

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


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

【Redis】hash数据类型-常用命令_第8张图片

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


关于HMSET

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


HLEN

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

语法:LEN key 

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

image-20231023183634248


HSETNX

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

语法:HSETNX key field value 

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

【Redis】hash数据类型-常用命令_第9张图片


HINCRBY

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

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

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

【Redis】hash数据类型-常用命令_第10张图片

HINCRBYFLOAT

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

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

【Redis】hash数据类型-常用命令_第11张图片


命令小结

【Redis】hash数据类型-常用命令_第12张图片

你可能感兴趣的:(Redis,哈希算法,redis,算法)