我想知道Redis密钥中哪些字符有效。我已经搜索了一段时间,找不到任何有用的信息。
像在Python中一样,有效的变量名称应属于class [a-zA-Z0-9_]。Redis密钥的要求和约定是什么?
[a-zA-Z0-9_]
在这里可以部分回答,但这并不是完全重复,因为您要询问允许的字符和约定。
至于 Redis密钥中的有效字符 ,本手册对此进行了完整的解释:
Redis密钥是二进制安全的,这意味着您可以使用任何二进制序列作为密钥,从“ foo”之类的字符串到JPEG文件的内容。空字符串也是有效的键。 有关密钥的其他一些规则: 过长的密钥不是一个好主意,例如,1024字节的密钥不仅是内存方面的主意,而且还因为在数据集中查找密钥可能需要进行一些代价高昂的密钥比较。即使当手头的任务是匹配一个大值的存在时,还是要对它进行哈希处理(例如使用SHA1)是一个更好的主意,尤其是从内存和带宽的角度来看。 非常短的键通常不是一个好主意。如果您可以改写“ user:1000:followers”,那么将“ u1000flw”作为密钥写的毫无意义。与键对象本身和值对象使用的空间相比,后者更具可读性,并且添加的空间较小。虽然短键显然会消耗较少的内存,但是您的工作是找到合适的平衡。 尝试坚持一个模式。例如,“ object-type:id”是一个好主意,例如“ user:1000”。点或破折号通常用于多字字段,例如“ comment:1234:reply.to”或“ comment:1234:reply-to”中。 允许的最大密钥大小为512 MB。
Redis密钥是二进制安全的,这意味着您可以使用任何二进制序列作为密钥,从“ foo”之类的字符串到JPEG文件的内容。空字符串也是有效的键。
有关密钥的其他一些规则:
过长的密钥不是一个好主意,例如,1024字节的密钥不仅是内存方面的主意,而且还因为在数据集中查找密钥可能需要进行一些代价高昂的密钥比较。即使当手头的任务是匹配一个大值的存在时,还是要对它进行哈希处理(例如使用SHA1)是一个更好的主意,尤其是从内存和带宽的角度来看。
非常短的键通常不是一个好主意。如果您可以改写“ user:1000:followers”,那么将“ u1000flw”作为密钥写的毫无意义。与键对象本身和值对象使用的空间相比,后者更具可读性,并且添加的空间较小。虽然短键显然会消耗较少的内存,但是您的工作是找到合适的平衡。
尝试坚持一个模式。例如,“ object-type:id”是一个好主意,例如“ user:1000”。点或破折号通常用于多字字段,例如“ comment:1234:reply.to”或“ comment:1234:reply-to”中。
允许的最大密钥大小为512 MB。