【Redis】Hash类型的常用命令

背景:redis中存储数据采取key-value键值对的形式,而hash内部也是键值对,为了区别这两个东西,hash内部的键值对称为:field-value,而redis的为key-value,这里的value包括:field-value。

对于hash类型的命令和String很像,大多数是在前面加上h,表示hash的意思

1.命令小结
命令 含义 时间复杂度
hset key field value 设置值 O(1)
hget key field 获取值 O(1)
hdel key field field ... 删除field O(n)
hlen key 计算field个数 O(1)
hgetall field field ... 获取所有的field-value O(n)
hmget field field ... 批量获取field-value O(n)
hexists key field 判断field是否存在 O(1)
hkeys key 获取所有的field O(n)
hvals key 获取所有的value O(n)
hsetnx key field value 设置field值,field不存在时成功 O(1)
hincrby key field n 对应field-value+n O(1)
hincrbyfloat key field n 对应field-value+n(浮点数版) O(1)
hstrlen key field 计算value的字符串长度 O(1)
2.hash命令详解

(1)hset

语法:hset key field value field value ......

含义:设置键值对

返回值:设置成功后的field-value键值对的个数

时间复杂度:O(N),N为插入的个数

(2)hget

语法:hget key field

返回值:返回field对应的value,每次只能获取一个

时间复杂度:O(1)

(3)hexists

语法:hexists key field

含义:判断hash中指定的字段是否存在

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

时间复杂度:O(1)

(4)hdel

语法:hdel key field field ...

含义:删除hash中指定的字段(删除的是field而不是key)

返回值:成功删除的field个数

时间复杂度:O(N),N为删除field的个数

(5)hkeys

语法:hkeys key

含义:获取hash中所有的field

时间复杂度:O(N),N为field的个数

(6)hvals

语法:hvals key

含义:返回所有的value(field对应的value)

时间复杂度:O(N),N为value的个数

(7)hgetall

语法:hgetall key

含义:获取hash中所有的field-value

时间复杂度:O(N),N为field的个数

(8)hmget

语法:hmget key field field ...

含义:返回hash中指定的field(可以同时查询多个field)

时间复杂度:O(N),N为查询field的个数

(9)hlen

语法:hlen key

含义:返回key对应的hash中所有字段的个数(field个数)

时间复杂度:O(1)

存在个数:

不存在:

(10)hsetnx

语法:hsetnx key field value

含义:在field不存在的时候才能设置成功

返回值:1表示设置成功,0表示失败

时间复杂度:O(1)

(11)hincrby

语法:hincrby key field increment

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

时间复杂度:O(1)

(12)hincybyfloat

语法:hincybyfloat key field increment

含义:将hash中指定字段对应的数值添加指定的值(浮点数版本)

时间复杂度:O(1)

(13)hstrlen

语法:hstrlen key field

含义:计算value的字符串长度

时间复杂度:O(1)

3.hash编码方式

哈希内部编码的方式有两种:ziplist和hashtable。

(1)ziplist(压缩列表)

含义:两种情况都满足,redis就会采取该种编码方式。第一种:元素个数小于一定值(默认hash-max-ziplist-entries为512个)第二种:hash中所有的value值小于一定字节(hash-max-ziplist-value默认为64字节),同时满足才会采取ziplist编码方式。这种编码方式会更加的节省内存

(2)hashtable(哈希表)

下面让hash中的value过长,看一下hashtable的编码方式

相关推荐
名字还没想好☜3 小时前
Python f-string 进阶:数字格式化、对齐填充、调试 = 号与嵌套表达式
开发语言·数据库·python·字符串格式化·f-string
ltl3 小时前
Serverless 数据库弹性理论:Neon 与 Aurora Serverless v2
数据库
凤山老林7 小时前
Spring Boot @Async 线上实战:从默认配置到生产级线程池治理
java·spring boot·后端
marvelyu8 小时前
每天10分钟学会OceanBase系列(Day 20):跨机房容灾实战——构建多数据中心高可用架构
java·大数据·数据库
ZCBUS实时计算8 小时前
金融证券实时数仓建设实践:轻量化实时计算平台落地,实现交易数据端到端秒级处理
大数据·数据库·数据仓库·金融·flink·dba·etl
zd2005728 小时前
海洋微生物数据库
数据库·宏基因组
海上小飞龙8 小时前
Redis 分布式锁原理:从 SET NX EX 到 Redisson 看门狗
数据库·redis·分布式
xiaoye-duck9 小时前
MySQL 表约束全解:从基础约束到外键关联规则
数据库·mysql
Hammer_Hans9 小时前
DFT笔记98
java·开发语言·数据库
迪康Defender10 小时前
从静态存储到动态流转:终端透明加密两种模式实战解析
运维·服务器·网络·数据库·其他