Redis——常用指令汇总指南(三)(哈希类型)
目录
1.hset & hget
①hset
②hsetnx
③hget
2.hstrlen
3.hexists & hlen
①hexists
②hlen
4.hdel
5.hkeys
6.hvals
7.hgetall
hkeys & hvals & hgetall的区别
8.hmget & hmset
9.hincrby & hincrbyfloat
①hincrby
②hincrbyfloat
1.hset & hget
①hset
hset指令用于设置哈希类型,支持一次设置多个field-val哈希,其返回值是成功设置的field-val映射的个数。时间复杂度为o(m),m是一次性设置field-val对的个数。
当field-val已存在时,hset的作用是修改val值。
hset key field1 val1 field2 val2 ...
在Redis哈希类型中,key和其他类型中key一样,而value是(field + val)。同时field和val又构成一对哈希映射。图示如下:
其使用示例如下:
②hsetnx
该指令可以类比指令setnx,只有当key中该field是第一次插入时,指令会成功执行并返回1,否则执行失败并返回0。值得一提的是,在Redis中并没有设置hsetex指令。
hsetnx key field val
使用示例如下:
③hget
hget是通过key+field来获取对应的val。需要强调,hget是获取val,而不是value(value == field + val)。而获取field是通过hkeys等指令(见后文)。时间复杂度为o(1)。
hget key field
使用示例如下:
2.hstrlen
hstrlen指令用于获取val的长度,长度以字节为单位。当val为汉字时,以3Byte为单位,详见
《Redis指令汇总(二)》
hstrlen key field
使用示例如下:
3.hexists & hlen
①hexists
该指令用于查看field-val在key中是否存在。若查询存在会返回1;否则,不管是field不存在还是key不存在,其返回的都是0。
hexists key field1 field2
使用示例如下:
②hlen
该指令用于获取field的个数。其时间复杂度为o(1),这里需要说明一下,Redis实现hash类型时,定义了一个变量专门用于记录当前该key中有多少个field。因此时间复杂度不是o(n),而是o(1)。
hlen key
使用示例如下:
4.hdel
该指令用于删除field-val,支持批量删除操作,返回成功删除field-val对的个数。
hdel key field1 field2 ...
使用示例如下:
需要注意,如果想直接删除key,那么使用del即可。
5.hkeys
hkeys指令用于获得特定key中所有的field,注意,该指令获得的是field。其时间复杂度为o(n),n为key中field的个数。
hkeys key
使用示例如下:
6.hvals
hvals用于获得特定key中所有的val,其时间复杂度为o(n),n为key中val的个数。
hvals key
使用示例如下:
7.hgetall
hgetall指令用于获得特定key中所有的field-val对。其时间复杂度为o(n),n为field-val对的个数。
hgetall key
使用示例如下:
hkeys & hvals & hgetall的区别
指令 | 返回对象 |
hkeys | field |
hvals | val |
hgetall | field-val |
8.hmget & hmset
hmget用于一次获取多个val。相比于hvals仅支持全部查找,它支持查找特定field的val。在返回的时候,会按照输入field的顺序来显示val。
需要说明的是Redis中实现了hmset,但是由于hset已经支持批量操作,所以hmset并不常用,在此不再演示说明。
hmget key field1 field2 ...
使用示例如下:
9.hincrby & hincrbyfloat
①hincrby
hincrby指令用于修改val的数值,是hash类型版的incrby指令(详见《Redis指令汇总(二)》)。其中n可正可负,执行时是val + n的操作。返回值是执行之后的val值。
hincrby key field n
使用示例如下:
当key或者field不存在时,hincrby指令会创建key或field,并将val赋值为指定的n。示例如下:
②hincrbyfloat
该指令是hincrby的浮点数版本,与hincrby的区别是n支持浮点数类型。
hincrbyfloat key field n
使用示例如下:
如有错误,敬请斧正