Redisシリーズ-hashメインアクションコマンドを格納

4308 ワード

Redisシリーズ-ストレージ編hash主な操作関数のまとめ


hashは、いくつかのカラムkey value(field value)のマッピングテーブルです.オブジェクトインスタンスを格納するためによく使用されます.オブジェクトの各フィールドをstringとして格納するよりも、hashとして格納するとメモリが少なくなります.なぜメモリを節約できるのでしょうか?2つの構成(hash-max-zipmap-entriesとhash-max-zipmap-value)の意味を明らかにする必要があります.構成の詳細は、最後の構成最適化の一環で説明するつもりです.

1)新規


a)hset

 :hset key field value
 : hash key field 。 hash , , field , hash , field 
[root@localhost ~]# redis-cli 
redis 127.0.0.1:6379> hset user.1 name lisi    # key user.1 name   
(integer) 1
redis 127.0.0.1:6379> hset user.1 age 45 # age 
(integer) 1
redis 127.0.0.1:6379> hset user.1 tech lisi
(integer) 1

b)hmset

 :hash key field value[key value]
 : hash key 
redis 127.0.0.1:6379> hmset user.2 name niuer age 34 # name  age 
OK

c)hsetnx

 :hsetnx key field value
 : field , hash field 
redis 127.0.0.1:6379> hsetnx user.1 name lisi  # name , 0
(integer) 0
redis 127.0.0.1:6379> hsetnx user.1 fri 5  
(integer) 1   #fri , hset 1

2)照会


a)hget

 :hget key field

 : key field 

redis 127.0.0.1:6379> hget user.1 name  # hash 
"lisi"
redis 127.0.0.1:6379> hget user.3 name  # hash 
(nil)
redis 127.0.0.1:6379> hget user.1 bb  # 
(nil)

b)hmget

 :hmget key field[field]

 : hash filed

redis 127.0.0.1:6379> hmget user.1 name age fri tech
1) "lisi"
2) "45"
3) "5"
4) "lisi"
redis 127.0.0.1:6379> hmget user.1 name age fri tech nofield # hash nofield
1) "lisi"
2) "45"
3) "5"
4) "lisi"
5) (nil)
redis 127.0.0.1:6379> hmget user.3 name age fri # hash 
1) (nil)
2) (nil)
3) (nil)

c)hgetall

 :hgetall key

 : hash 

redis 127.0.0.1:6379> hgetall user.2  # hash 
1) "name"   # 
2) "niuer"  # name 
3) "age"    # 
4) "34"     # age 
redis 127.0.0.1:6379> hgetall user.3  # hansh 
(empty list or set)

d)hexists

 :hexists key field

 : hash 

redis 127.0.0.1:6379> hexists user.1 name  # 
(integer) 1
redis 127.0.0.1:6379> hexists user.1 nofield  # 
(integer) 0
redis 127.0.0.1:6379> hexists use1 nofield #hash 
(integer) 0

e)hkeys

 :hkeys key

 : hash 

redis 127.0.0.1:6379> hkeys user.1  # hash 
1) "name"
2) "age"
3) "tech"
4) "fri"
redis 127.0.0.1:6379> hkeys user.4 # hash
(empty list or set)

f)hvals

 :hvals key

 : hash 

redis 127.0.0.1:6379> hvals user.1  # hash
1) "lisi"
2) "45"
3) "lisi"
4) "5" 
redis 127.0.0.1:6379> hvals user.4 # 
(empty list or set)

3)修正

 :hincrby key field increment

 :hash field increment, increment , 。 , 0

redis 127.0.0.1:6379> hincrby user.1 age 2  # 2
(integer) 47
redis 127.0.0.1:6379> hincrby user.1 age -3  # 3
(integer) 44
redis 127.0.0.1:6379> hincrby user.1 age2 -3 # , 0
(integer) -3

4)削除

 :hdel key field[field]

 : hash , field, 

redis 127.0.0.1:6379> hkeys user.1
1) "name"
2) "age"
3) "tech"
4) "fri"
5) "age2"
redis 127.0.0.1:6379> hdel user.1 age2  # 
(integer) 1
redis 127.0.0.1:6379> hkeys user.1
1) "name"
2) "age"
3) "tech"
4) "fri"
redis 127.0.0.1:6379> hdel user.1 fri tech # 2 
(integer) 2
redis 127.0.0.1:6379> hkeys user.1
1) "name"
2) "age"
redis 127.0.0.1:6379> hdel user.1 bb #  
(integer) 0 # 0

5)その他

 :hlen key

 : hash 

redis 127.0.0.1:6379> hkeys user.1
1) "name"
2) "age"
redis 127.0.0.1:6379> hlen user.1 # 2 
(integer) 2
redis 127.0.0.1:6379> hlen user.4  # hash
(integer) 0

hashの詳細については、次を参照してください.http://redis.io/commands#hash