号外号外,新建Redis交流讨论群:332160890,欢迎加入!!
哈希类型的两种编码方式:OBJ_ENCODING_HT和OBJ_ENCODING_ZIPLIST
1、hsetCommand(client *c)
使用:HSET key field value
说明:如果key对应的哈希表不存在,则创建一个,然后再在该哈希表中插入field=> value键值对,如果该field之前有对应值,则替换;这个命令实现中因为是写操作,会考虑是否将ZIPLIST编码修改为HT编码
2、hsetnxCommand(client *c)
使用:HSETNX key field value
说明:与HSET不同的时候,如果域field对应的数据已存在,则不进行任何操作
3、hmsetCommand(client *c)
使用:HMSET key filed value [field value …]
说明:同时将多个filed->value对设置到key对应的哈希表中,如果key对应的哈希表不存在,则新创建一个
4、hincrbyCommand(client *c)
使用:HINCRBY key field increment
说明:为key对应的哈希表中field对应的value加上增量increment(可正可负),超出范围则返回,如果field当前不存在,则默认原来的value为0;
5、hincrbyfloatCommand(client *c)
使用:HINCRBYFLOAT key field float
说明:与HINCRBY类似,只是针对的是浮点型,这里面有一点有意思,就是同步到AOF或者SLAVE节点时不是传递该函数,而是直接使用HSET设置加减后的数据,避免浮点型带来的数据不一致
6、hgetCommand(client *c)
使用:HGET key field
说明:获取key对应的哈希表中field对应的value值
7、hmgetCommand(client *c)
使用:HMGET key field [field …]
说明:获取key对应的哈希表中多个field对应的value值,可能有的存在有的不存在
8、hdelCommand(client *c)
使用:HDEL key field [field …]
说明:删除key对应的哈希表中若干个field的数据,如果剩下的哈希表空了的话,删除该key对应的哈希表
9、hlenCommand(client *c)
使用:HLEN key
说明:返回key对应的哈希表中field的数目,不存在返回0
10、hstrlenCommand(client *c)
使用:HSTRLEN key filed
说明:返回key对应的哈希表field对应的value的长度
11、hkeysCommand(client *c)
使用:HKEYS key
说明:获取key对应的哈希表中所有的field
12、hvalsCommand(client *c)
使用:HVALS key
说明:获取key对应的哈希表中所有field对应的value
13、hgetallCommand(client *c)
使用:HGETALL key
说明:获取key对应的哈希表中所有的field => value信息
14、hexistsCommand(client *c)
使用:HEXISTS key field
说明:返回key中field是否存在数据的信息
15、hscanCommand(client *c)
使用:HSCAN key cursor [MATCH pattern] [COUNTcount]
说明:增量式浏览,支持限制数量以及模式匹配,具体详见SCAN