11 Redisハッシュ(Hash)
7370 ワード
Redis hashはstringタイプのfieldとvalueのマッピングテーブルであり、hashは特にオブジェクトを格納するのに適している.Redis内の各hashは、232−1キー値対(40億以上)を記憶することができる.
以上の例では、redisのいくつかの記述情報(name,description,likes,visitors)をハッシュテーブルのrunoobkeyに設定した.
次の表に、redis hashの基本的な関連コマンドを示します.
≪インスタンス|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"