hset
key field valuehmset
key field value [field1 value1 field2 value2 ... ]hsetnx
key field valuehget
key fieldhmget
key field [field1 field2 ...]hgetall
keyhdel
key field [field1 field2 ...]hlen
key hexists
key fieldhkeys
key hvals
key hincrby
key field incrementhincrbyfloat
key field incrementhstrlen
key fieldhset
key field value 设置指定key 的指定field 值。
如果field不存在,则创建field,成功则返回1,如果field存在,则重写,返回值为0。
可用版本:
>= 2.0.0
时间复杂度:
O(1)
10.6.25.66:9000> hset user:1 name zhangsan
(integer) 1
10.6.25.66:9000> hset user:1 name lisi
(integer) 0
hmset
key field value [field1 value1 field2 value2 ... ]批量设置指定key 的指定field 值。
可用版本:
>= 2.0.0
时间复杂度:
O(N) N为field数量。
10.6.25.66:9000> hmset user:1 name zhangsan age 20 sex 男
OK
hsetnx
key field value批量设置指定key 的指定field 值。但前提是该field 必须不存在,如果存在,则不进行操作,返回0,如果不存在,则新建field,正常返回1。
可用版本:
>= 2.0.0
时间复杂度:
O(1)
name之前存在;hight不存在。
10.6.25.66:9000> hsetnx user:1 name lisi
(integer) 0
10.6.25.66:9000> hsetnx user:1 hight 170
(integer) 1
hget
key field得到指定key 的指定field 值,如果key 或field 不存在 ,返回nil。
可用版本:
>= 2.0.0
时间复杂度:
O(1)
10.6.25.66:9000> hget user:1 name
"zhangsan"
10.6.25.66:9000> hget user:2 name
(nil)
hmget
key field [field1 field2 ...]返回指定key 的多个field的值 ,如果某个field 不存在 ,则该field 返回nil,其它正常返回;如果该key本身也不存在,则所有的field 都返回nil。
可用版本:
>= 2.0.0
时间复杂度:
O(N),N 为field 个数
10.6.25.66:9000> hset hello field1 value1
(integer) 1
10.6.25.66:9000> hmset hello field2 value2 field3 value3
OK
10.6.25.66:9000> hmget hello field1 field2 field3 field4
1) "value1"
2) "value2"
3) "value3"
4) (nil)
10.6.25.66:9000> hmget hello1 field1 field2
1) (nil)
2) (nil)
hgetall
key返回指定key 的所有field和对应value;
可用版本:
>= 2.0.0
时间复杂度:
O(N),N 为field总数
10.6.25.66:9000> hgetall hello
1) "field1"
2) "value1"
3) "field2"
4) "value2"
5) "field3"
6) "value3"
hdel
key field [field1 field2 ...]删除指定key 的指定field ;如果某个field 不存在 ,则直接忽略该field,删除完成后,返回成功删除的个数,如果要删除的key 本身不存在,则直接返回0;如果删除的key不是hash类型,则返回错误。
可用版本:
>= 2.4.0 (小于2.4.0版本,只接收一个field )
时间复杂度:
O(N),N 为被删除的field总数
10.6.25.66:9000> hdel hello field1 field2 field5
(integer) 2
10.6.25.66:9000> hdel hello1 field1 field2
(integer) 0
10.6.25.66:9000> set hello value
OK
10.6.25.66:9000> type hello
string
10.6.25.66:9000> hdel hello field1
(error) WRONGTYPE Operation against a key holding the wrong kind of value
hlen
key返回某个hash 类型的field 长度,如果该key不存在 ,则返回0 。
可用版本:
>= 2.0.0
时间复杂度:
O(1)
10.6.25.66:9000> hlen hello
(integer) 2
10.6.25.66:9000> del hello
(integer) 1
10.6.25.66:9000> hlen hello
(integer) 0
hexists
key field返回某个hash 类型的field 是否存在,存在返回1,不存在返回0。
可用版本:
>= 2.0.0
时间复杂度:
O(1)
10.6.25.66:9000> hexists hello field2
(integer) 0
10.6.25.66:9000> hexists hello field1
(integer) 1
hkeys
key返回某个hash 类型的所有field 。
可用版本:
>= 2.0.0
时间复杂度:
O(N),N为field 个数
10.6.25.66:9000> hmset hello field1 value1 field2 value2 field3 value3 field5 value5
OK
10.6.25.66:9000> hkeys hello
1) "field1"
2) "field2"
3) "field3"
4) "field5"
hvals
key返回某个hash 类型的所有field 对应的value 。
可用版本:
>= 2.0.0
时间复杂度:
O(N),N为field 个数
10.6.25.66:9000> hmset hello field1 value1 field2 value2 field3 value3 field5 value5
OK
10.6.25.66:9000> hvals hello
1) "value1"
2) "value2"
3) "value3"
4) "value5"
hincrby
key field increment与incrby 类似,增加Hash 类型中的某个field 的值,如果该key 或 该key 的field 不存在, 则会自动创建该key 和该field,field 的值默认为0,该命令支持的增加范围为64位的整数。
可用版本:
>= 2.0.0
时间复杂度:
O(1)
10.6.25.66:9000> hget hello field6
(nil)
10.6.25.66:9000> hincrby hello field6 100
(integer) 100
10.6.25.66:9000> hincrby hello field6 100
(integer) 200
10.6.25.66:9000> hincrby hello field1 100
(error) ERR hash value is not an integer
hincrbyfloat
key field increment与incrbyfloat 类似,增加Hash 类型中的某个field 的值(float型),如果该key 或 该key 的field 不存在, 则会自动创建该key 和该field,field 的值默认为0,如果该field 已经存在,且该field 的值不能转化为float 型 ,则会返回错误。
可用版本:
>= 2.6.0
时间复杂度:
O(1)
10.6.25.66:9000> hincrbyfloat hello field1 20.4
(error) ERR hash value is not a valid float
10.6.25.66:9000> hincrbyfloat hello field6 20.6
"220.60000000000000001"
10.6.25.66:9000> hincrbyfloat hello field6 -20.6
"200"
hstrlen
key field计算Hash 类型中的某个field 的value 字符串长度。
可用版本:
>= 3.2.0
时间复杂度:
O(1)
10.6.25.66:9000> hstrlen hello field1
(integer) 6
10.6.25.66:9000> hstrlen hello field6
(integer) 3
10.6.25.66:9000> hstrlen hello field2
(integer) 6