hashes类型及操作
redis hash是一个string类型的field和value的映射表。hash特别适用于存储对象。相较于将对象的每个字段存成单个string类型。将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。
hset
设置hash field为指定值,如果key不存在,则先创建。
例如:设置一个id为001的用户,name是ysy
127.0.0.1:6379> hset user:001 name ysy
(integer) 1
127.0.0.1:6379> hget user:001 name
"ysy"
hsetnx
设置hash field为指定值,如果key不存在,则先创建,如果存在则返回0.
127.0.0.1:6379> hset user:001 name ysy
(integer) 1
127.0.0.1:6379> hget user:001 name
"ysy"
127.0.0.1:6379> hsetnx user:001 name 123
(integer) 0
127.0.0.1:6379> hsetnx user:002 name 002
(integer) 1
127.0.0.1:6379> hget user:002 name
"002"
hmset
同时设置hash的多个field。
127.0.0.1:6379> hmset user:003 name ysy age 21 sex 1
OK
127.0.0.1:6379> hget user:003 name
"ysy"
127.0.0.1:6379> hget user:003 age
"21"
127.0.0.1:6379> hget user:003 sex
"1"
hget
获取指定的hash field
hmget
获取全部指定的hash field
127.0.0.1:6379> hmget user:003 name age sex
1) "ysy"
2) "21"
3) "1"
hincrby
给hash field加上指定值
127.0.0.1:6379> hget user:003 age
"21"
127.0.0.1:6379> hincrby user:003 age 5
(integer) 26
127.0.0.1:6379> hincrby user:003 age 5
(integer) 31
127.0.0.1:6379> hincrby user:003 age -5
(integer) 26
hexists
测试指定的field是否存在
127.0.0.1:6379> hexists user:003 age
(integer) 1
127.0.0.1:6379> hexists user:003 name
(integer) 1
127.0.0.1:6379> hexists user:003 sex
(integer) 1
127.0.0.1:6379> hexists user:003 old
(integer) 0
hlen
返回指定的hash的field数量
127.0.0.1:6379> hlen user:003
(integer) 3
hdel
删除指定的hash field
127.0.0.1:6379> hget user:003 age
"26"
127.0.0.1:6379> hdel user:003 age
(integer) 1
127.0.0.1:6379> hexists user:003 age
(integer) 0
127.0.0.1:6379> hget user:003 age
(nil)
hkeys
返回hash所有的field
127.0.0.1:6379> hkeys user:003
1) "name"
2) "sex"
hvals
返回hash所有的value
127.0.0.1:6379> hkeys user:003
1) "name"
2) "sex"
127.0.0.1:6379> hvals user:003
1) "ysy"
2) "1"
hgetall
获取某个hash中全部的field及value
127.0.0.1:6379> hgetall user:003
1) "name"
2) "ysy"
3) "sex"
4) "1"