redis_hash

hash命令

  • hset key field value 设置hash

    为user:1 添加一对filed-value
    127.0.0.1:6379> hset user:1 name tomcat
    (integer) 1
    
    #hsetnx 不存在则添加
    
  • hget key field 获取值

    127.0.0.1:6379> hget user:1 name
    "tomcat"
    
  • hdel key field [field] 删除field

    127.0.0.1:6379> hdel user:1 name
    (integer) 1
    127.0.0.1:6379> hdel user:1 age
    (integer) 0
    
    #时间复杂度O(k),k是field的个数
    
  • hlen 计算filed的个数

    127.0.0.1:6379> hset user:1 name tomcat
    (integer) 1
    127.0.0.1:6379> hset user:1 age 10
    (integer) 1
    127.0.0.1:6379> hset user:1 city usa
    (integer) 1
    127.0.0.1:6379> hlen user:1    
    (integer) 3
    
  • hmget key field [field] #时间复杂度O(k),k是field的个数

  • hmset key field value [field value ...]

    127.0.0.1:6379> del user:1	
    (integer) 1
    127.0.0.1:6379> keys *
    (empty list or set)
    127.0.0.1:6379> hmset user:1 name mike  age 13 city tianjin
    OK
    127.0.0.1:6379> hmget user:1 name age 
    1) "mike"
    2) "13"
    
    #时间复杂度O(k),k是field的个数
    
  • hexists key field 判断field是否存在

    127.0.0.1:6379> HEXISTS user:1  name
    (integer) 1
    
  • hkeys 获取所有的field

    127.0.0.1:6379> hkeys user:1
    1) "name"
    2) "age"
    3) "city"
    
    #时间复杂度O(n),n是field的总数
    
  • hvals key 获取所有的值

    127.0.0.1:6379> hvals  user:1
    1) "mike"
    2) "13"
    3) "tianjin"
    #时间复杂度O(n),n是field的总数
    
  
+ hgetall key  获取键的所有field-value

  ```shell
  127.0.0.1:6379> hgetall user:1
  1) "name"
  2) "mike"
  3) "age"
  4) "13"
  5) "city"
  6) "tianjin"
  #时间复杂度O(n),n是field的个数
  
  #hscan 可替代
  
  • hincrby key filed
  • hincrbyfloat key field
  • hstrlen(redis3.2以上支持)

内部编码

  • ziplist(压缩列表):hash类型元素个数<hash-max-ziplist-entries(default512) 或者 所有的值<hash-max-ziplist-value(64字节) 同时满足以上2个条件,则使用更加紧凑的ziplist实现多个元素的连续存储。

  • hashtable(哈希表):当hash类型无法满足ziplist的条件时,此时ziplist的读写效率会下降,而hashtable的读写时间复杂度为O(1);

  • 127.0.0.1:6379> hmset hashkey f1 v1 f2 v2
    OK
    127.0.0.1:6379> object encoding hashkey
    "ziplist"
    
posted @ 2020-06-15 16:24  Noob52037  阅读(94)  评论(0编辑  收藏  举报