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