redis的key能是空字符串?

redis的key能是空字符串?这个问题,如果不是在生产遇到了,可能很多人都不会去想,也不会被刷新认知。因为,答案是可以的。

如图,通过代码可知,在对redis的进行设值的时候,当key为空字符串的时候,程序正常运行。那么,为什么呢?

在执行客户端命令的时候,所有的参数,都会被转换为一个 redisObject 。在执行 setCommand 的时候,redis并不会检测key字段的长度,而是一路直下,只有在在进行字典查找的时候,将key进行hash,再在字典中进行查找。

值得注意的是,空值(一个字符串都没有)是可以进行hash并且产生hash值的,所以在redis的字典中,空值的key是一个正常的存在,才导致了开篇的情况。

Leave a Comment

邮箱地址不会被公开。 必填项已用*标注