hashes类型

hashes类型及操作
Redis hash是一个string类型的field和value的映射表。它的添加、删除操作都是0(1)(平均)。hash特别适合用于存储对象。相较于将对象的每个字段存成单个string类型。将一个对象存储在hash类型中会占用更少的内存,并且更方便的存取整个对象。

hset
设置hash field为指定值,如果key不存在,则先创建

127.0.0.1:6379> hset myhash name guodaxia
(integer) 1
127.0.0.1:6379> hget myhash name
"guodaxia"

 

hsetnx
设置hash field为指定值,如果key不存在,则先创建。如果存在返回0

127.0.0.1:6379> hsetnx user name name1
(integer) 1
127.0.0.1:6379> hget user name
"name1"
127.0.0.1:6379> hsetnx user name name2
(integer) 0
127.0.0.1:6379> hget user name
"name1"

 

hmset
同时设置hash的多个field

127.0.0.1:6379> hmset user:003 name lijie age 20 sex 1
OK
127.0.0.1:6379> hget user:003 name
"lijie"
127.0.0.1:6379> hget user:003 age
"20"
127.0.0.1:6379> hget user:003 sex
"1"

 

hget
获取hash里面的指定field

127.0.0.1:6379> hset myhash name guodaxia
(integer) 1
127.0.0.1:6379> hget myhash name
"guodaxia"

 

hmget
获取某个hash里面的一些field

127.0.0.1:6379> hmget user:003 name age sex
1) "lijie"
2) "20"
3) "1"

 


hincrby
指定的hash field加上给定值

127.0.0.1:6379> hmget user:003 name age sex
1) "lijie"
2) "20"
3) "1"
127.0.0.1:6379> hincrby user:003 age -8
(integer) 12
127.0.0.1:6379> hincrby user:003 age 5
(integer) 17
127.0.0.1:6379> hget user:003 age
"17"

 

hexists
判断hash里面某个field是否存在

127.0.0.1:6379> hexists user:003 name
(integer) 1
127.0.0.1:6379> hexists user:003 parent
(integer) 0

 


hlen
返回hash里面所有的field数

127.0.0.1:6379> hlen user:003
(integer) 3
127.0.0.1:6379> hlen myhash
(integer) 1

 


hdel
删除指定hash的field

redis的Hash类型以及其操作_删除操作redis的Hash类型以及其操作_对象存储_02
127.0.0.1:6379> hget user:003 age
"17"
127.0.0.1:6379> hdel user:003 age
(integer) 1
127.0.0.1:6379> hget user:003 age
(nil)
View Code

 

hkeys
返回hash里面所有的field

127.0.0.1:6379> hlen user:003
(integer) 2
127.0.0.1:6379> hkeys user:003
1) "name"
2) "sex"
127.0.0.1:6379> hkeys myhash
1) "name"

 


hvals
返回此hash的所有value

127.0.0.1:6379> hvals user:003
1) "lijie"
2) "1"

 

hgerall
获取某个hash中全部的field和value

127.0.0.1:6379> hgetall user:003
1) "name"
2) "lijie"
3) "sex"
4) "1"