11 Redisハッシュ(Hash)

7370 ワード

Redis hashはstringタイプのfieldとvalueのマッピングテーブルであり、hashは特にオブジェクトを格納するのに適している.Redis内の各hashは、232−1キー値対(40億以上)を記憶することができる.
  • ≪インスタンス|Instance|emdw≫

  • 127.0.0.1:6379> HMSET runoobkey name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000\
    OK
    127.0.0.1:6379> HGETALL runoobkey
    1) "name"
    2) "redis tutorial"
    3) "description"
    4) "redis basic commands for caching"
    5) "likes"
    6) "20"
    7) "visitors"
    8) "23000\\"
    
    
    

    以上の例では、redisのいくつかの記述情報(name,description,likes,visitors)をハッシュテーブルのrunoobkeyに設定した.

    Redis hashコマンド


    次の表に、redis hashの基本的な関連コマンドを示します.
  • 1 Hdel

  • Redis Hdel           key            ,          。
    
    #   
    redis 127.0.0.1:6379> HDEL KEY_NAME FIELD1.. FIELDN 
    
    
    #    
              ,         。
    
    #   
    127.0.0.1:6379> HSET myhash field1 "foo"
    (integer) 1
    127.0.0.1:6379> HGETall myhash
    1) "field1"
    2) "foo"
    127.0.0.1:6379> HDEL myhash field1
    (integer) 1
    127.0.0.1:6379> Hgetall myhash
    (empty list or set)
    127.0.0.1:6379> HDEL myhash2 field1
    (integer) 0
    
  • 2 Hexists

  • Redis Hexists                   。
    
    #   
    redis 127.0.0.1:6379> HEXISTS KEY_NAME FIELD_NAME 
    
    
    #    
               ,   1 。             ,  key    ,   0 。
    
    #   
    127.0.0.1:6379> HSET myhash field1 "foo"
    (integer) 1
    127.0.0.1:6379> HEXISTS myhash field1
    (integer) 1
    127.0.0.1:6379> HEXISTS myhash field2
    (integer) 0
    
  • 3 Hget

  • Redis Hget                 。
    
    #   
    redis 127.0.0.1:6379> HGET KEY_NAME FIELD_NAME 
    
    
    #    
            。         key     ,   nil 。
    
    #   
    
    #     
    127.0.0.1:6379> HSET site redis redis.com
    (integer) 1
    127.0.0.1:6379> HGET site redis
    "redis.com"
    
    
    #      
    127.0.0.1:6379> HGET site mysql
    (nil)
    
  • 4 Hgetall

  • Redis Hgetall           ,       。
         ,       (field name)       (value),                 。
    
    #   
    redis 127.0.0.1:6379> HGETALL KEY_NAME 
    
    
    #    
                     。   key    ,     。
    
    
    #   
    
    127.0.0.1:6379> HSET myhash field1 "Hello"
    (integer) 1
    127.0.0.1:6379> HSET myhash field2 "World"
    (integer) 1
    127.0.0.1:6379> HGETALL myhash
    1) "field1"
    2) "Hello"
    3) "field2"
    4) "World"
    
  • 5 Hincrby

  • Redis Hincrby                     。
            ,              。
           key    ,              HINCRBY   。
              ,        ,          0 。
                   HINCRBY          。
              64  (bit)         。
    
    #   
    redis 127.0.0.1:6379> HINCRBY KEY_NAME FIELD_NAME INCR_BY_NUMBER 
    
    #    
       HINCRBY     ,        。
    
    
    #   
    
    #           
    127.0.0.1:6379> HSET myhash field 5
    (integer) 1
    127.0.0.1:6379> HINCRBY myhash field 1
    (integer) 6
    127.0.0.1:6379> HINCRBY myhash field -10
    (integer) -4 
    
  • 6 Hincrbyfloat

  • Redis Hincrbyfloat                        。
              ,        ,          0 。
    
    #   
    redis 127.0.0.1:6379> HINCRBYFLOAT KEY_NAME FIELD_NAME INCR_BY_NUMBER 
    
    
    #    
       Hincrbyfloat     ,        。
    
    
    #   
    127.0.0.1:6379> HSET mykey field 10.50
    (integer) 1
    127.0.0.1:6379> HINCRBYFLOAT mykey field 0.1
    "10.6"
    127.0.0.1:6379> HINCRBYFLOAT mykey field -5
    "5.6"
    127.0.0.1:6379> HSET mykey field 5.0e3
    (integer) 0
    127.0.0.1:6379> hINCRBYFLOAT mykey field 2.0e2
    "5200"
    
  • 7 Hkeys

  • Redis Hkeys               (field)。
    
    #   
    redis 127.0.0.1:6379> HKEYS KEY_NAME FIELD_NAME INCR_BY_NUMBER 
    
    
    #    
             (field)  。   key     ,       。
    
    
    #   
    
    127.0.0.1:6379> HSET myhash field1 "foo"
    (integer) 1
    127.0.0.1:6379> HSET myhash field2 "bar"
    (integer) 1
    127.0.0.1:6379> HKEYS myhash
    1) "field1"
    2) "field2"
    
  • 8 Hlen

  • Redis Hlen                。
    
    #   
    redis 127.0.0.1:6379> HLEN KEY_NAME 
    
    
    #    
             。   key     ,   0 。
    
    
    #   
    redis 127.0.0.1:6379> HSET myhash field1 "foo"
    (integer) 1
    redis 127.0.0.1:6379> HSET myhash field2 "bar"
    (integer) 1
    redis 127.0.0.1:6379> HLEN myhash
    (integer) 2
    
  • 9 Hmget

  • Redis Hmget           ,           。
                  ,       nil  。
    
    #   
    redis 127.0.0.1:6379> HMGET KEY_NAME FIELD1...FIELDN 
    
    #    
                   ,                   。
    
    
    #   
    
    #           
    127.0.0.1:6379> HSET myhash field1 "foo"
    (integer) 1
    127.0.0.1:6379> HSET myhash field2 "bar"
    (integer) 1
    127.0.0.1:6379> HMGET myhash field1 field2 nofield
    1) "foo"
    2) "bar"
    3) (nil)
    
  • 10 Hmset

  • Redis Hmset           field-value (  - )        。
                    。
            ,         ,    HMSET   。
    
    #   
    redis 127.0.0.1:6379> HMSET KEY_NAME FIELD1 VALUE1 ...FIELDN VALUEN  
    
    
    #    
            ,   OK 。
    
    
    #   
    
    #           
    127.0.0.1:6379> HMSET myhash field1 "Hello" field2 "World"
    OK
    127.0.0.1:6379> HGET myhash field1
    "Hello" 
    127.0.0.1:6379> HGET myhash field2
    "World"
    
  • 11 Hset

  • Redis Hset                。
            ,              HSET   。
                 ,      。
    
    
    #   
    redis 127.0.0.1:6379> HSET KEY_NAME FIELD VALUE 
    
    #    
                    ,       ,   1 。                       ,   0 。
    
    
    #   
    127.0.0.1:6379> HSET myhash field1 "foo"
    (integer) 1
    127.0.0.1:6379> HGET myhash field1
    "foo"
    127.0.0.1:6379> HSET website google "www.g.cn"               #       
    (integer) 1
    127.0.0.1:6379> HSET website google "www.google.com"        #       
    (integer) 0
    127.0.0.1:6379> HGET website google
    "www.google.com"
    
    
  • 12 Hsetnx

  • Redis Hsetnx                    。
            ,              HSET   。
                 ,    。
       key    ,             HSETNX   。
    
    #   
    redis 127.0.0.1:6379> HSETNX KEY_NAME FIELD VALUE
    
    
    #    
        ,   1 。                   ,   0 。
    
    
    #   
    
    redis 127.0.0.1:6379> HSETNX myhash field1 "foo"        #     , field1    
    (integer) 1
    redis 127.0.0.1:6379> HSETNX myhash field1 "bar"     
    (integer) 0
    redis 127.0.0.1:6379> HGET myhash field1 
    "foo"
    
  • 13 Hvals

  • Redis Hvals           (field)  。
    
    #   
    redis 127.0.0.1:6379> HVALS KEY_NAME FIELD VALUE 
    
    #    
               (field)    。   key     ,      。
    
    
    #   
    
    127.0.0.1:6379> HSET myhash field1 "foo"
    (integer) 1
    127.0.0.1:6379> HSET myhash field2 "bar"
    (integer) 1
    127.0.0.1:6379> HVALS myhash
    1) "foo"
    2) "bar"
    
    #     /    key
    127.0.0.1:6379> exists 666
    (integer) 0
    127.0.0.1:6379> havls 666
    (error) ERR unknown command 'havls'
    127.0.0.1:6379> hvals 666
    (empty list or set)
    
    
  • 14 HSCAN

  •           。
    
    #   
    HSCAN key cursor [MATCH pattern] [COUNT count] 
    
    
    #    
            
    
    
    #   
    127.0.0.1:6379> hscan myhash 0
    1) "0"
    2) 1) "field1"
       2) "foo"
       3) "field2"
       4) "bar"