Redis常用数据类型--Hash

Hash

  • 常用命令
    • HSET
    • HGET
    • HEXISTS
    • HDEL
    • HKEYS/HVALS
    • HGETALL
    • HMGET
    • HLEN
    • HSETNX
    • HINCRBY/HINCRBYFLOAT
  • 内部编码
  • 典型应用场景

常用命令

HSET

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

 HSET key field value [field value ...]

时间复杂度:插⼊⼀组 field 为 O(1), 插⼊ N 组 field 为 O(N)

HGET

获取 hash 中指定字段的值

HGET key field

时间复杂度:O(1)

HEXISTS

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

HEXISTS key field

时间复杂度:O(1)

HDEL

删除 hash 中指定的字段

HDEL key field [field ...]

时间复杂度:删除⼀个元素为 O(1). 删除 N 个元素为 O(N)

HKEYS/HVALS

获取 key 中所有 fields / values

HKEYS key/HVALS key

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

HGETALL

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

 HGETALL key

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

HMGET

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

 HMGET key field [field ...]

时间复杂度:只查询⼀个元素为 O(1), 查询多个元素为 O(N), N 为查询元素个数

HLEN

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

HLEN key

时间复杂度:O(1)

HSETNX

在字段不存在的情况下,设置 hash 中的字段和值

HSETNX key field value

时间复杂度:O(1)

HINCRBY/HINCRBYFLOAT

将 hash 中字段对应的数值添加指定的整数/浮点数

HINCRBY key field increment/ HINCRBYFLOAT key field increment

时间复杂度:O(1)

内部编码

哈希的内部编码有两种:

  • ziplist(压缩列表):当哈希类型元素个数⼩于 hash-max-ziplist-entries 配置(默认 512 个)、 同时所有值都⼩于 hash-max-ziplist-value 配置(默认 64 字节)时,Redis 会使⽤ ziplist 作为哈 希的内部实现,ziplist 使⽤更加紧凑的结构实现多个元素的连续存储,所以在节省内存⽅⾯⽐ hashtable 更加优秀。
  • hashtable(哈希表):当哈希类型⽆法满⾜ ziplist 的条件时,Redis 会使⽤ hashtable 作为哈希 的内部实现,因为此时 ziplist 的读写效率会下降,⽽ hashtable 的读写时间复杂度为 O(1)。

典型应用场景

映射关系表⽰⽤⼾信息

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