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

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)
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"