Redis五大基本数据类型之Hash类型

一、Hash类型数据的基本操作

1.1 Hash类型数据的基本性质

  1. 是一个Map集合,存放的形式为key-Map

    1.2 Hash类型数据的基本命令

  2. Hash类型数据添加字段和取出特定字段的值

    1. hset key field value:添加一个哈希key-Map,对应的Mapfield:value
      1. 当对应的field已经存在时,为更新操作
    2. hget key field:获取哈希key的字段filed的值
      1. 127.0.0.1:6379> hset myhash name xiaohe
      2. (integer) 1
      3. 127.0.0.1:6379> hget myhash name
      4. "xiaohe"
  3. 一次性为Hash类型数据添加多个字段和获取多个字段的值

    1. hmset key field1 value1 ... fieldn valuen:同时为key添加或更新多个字段的值
    2. hmget key field1 ... fieldn:同时获取key的多个字段的值
      1. 127.0.0.1:6379> hmset myhash name xiaohe1 name2 xiaohe2
      2. OK
      3. 127.0.0.1:6379> hmget myhash name name2
      4. 1) "xiaohe1"
      5. 2) "xiaohe2"
  4. hgetall key:获取Hash key中的所有field以及对应的value

    1. 127.0.0.1:6379> hgetall myhash
    2. 1) "name"
    3. 2) "xiaohe1"
    4. 3) "name2"
    5. 4) "xiaohe2"
  5. hdel key field:删除Hash key中指定的field对应的键值对

    1. 127.0.0.1:6379> hgetall myhash
    2. 1) "name"
    3. 2) "xiaohe1"
    4. 3) "name2"
    5. 4) "xiaohe2"
    6. 127.0.0.1:6379> hdel myhash name
    7. (integer) 1
    8. 127.0.0.1:6379> HGETALL myhash
    9. 1) "name2"
  6. hlen key:获取Hash key的内容长度,一个field-value为一个值

    1. 127.0.0.1:6379> HGETALL myhash
    2. 1) "name2"
    3. 2) "xiaohe2"
    4. 127.0.0.1:6379> hlen myhash
    5. (integer) 1
  7. hexists key field:判断Hash key中指定字段field是否存在

    1. 127.0.0.1:6379> hexists myhash name2
    2. (integer) 1
    3. 127.0.0.1:6379> hexists myhash nam
    4. (integer) 0
  8. 只获取Hash中的filedvalue

    1. hkeys key:获取Hash key中的所有字段
    2. hvals key:获取Hash key中的所有值
      1. 127.0.0.1:6379> hexists myhash name2
      2. (integer) 1
      3. 127.0.0.1:6379> hexists myhash nam
      4. (integer) 0
  9. 自增自减

    1. hincrby key field increment:设置Hash key的字段field增加increment
    2. Hash没有hdecrby命令,自减时将increment设为负数即可
      1. 127.0.0.1:6379> hset key num 3
      2. (integer) 1
      3. 127.0.0.1:6379> hincrby key num 6
      4. (integer) 9
      5. 127.0.0.1:6379> hincrby key num -1
      6. (integer) 8
  10. hsetnx key field value:当Hash key中没有字段field时插入键值对field-value

    1. 127.0.0.1:6379> hsetnx key num1 0
    2. (integer) 1
    3. 127.0.0.1:6379> hsetnx key num1 2
    4. (integer) 0

    1.3 Hash的应用

  11. Hash用来保存经常变动的用户的信息,更适合于对象的存储,String更适合字符串的存储