Redis键的命名规范和有效字符

105

我想知道在Redis键中哪些字符被视为有效字符。我已经搜索过一段时间,但找不到任何有用的信息。

与Python中的变量名类似,有效的变量名应属于类[a-zA-Z0-9_]。Redis键的要求和惯例是什么?

1个回答

144

这部分问题的答案已经在这里得到解答,但并不完全重复,因为你不仅问了允许使用哪些字符,还问了命名规范。

至于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。


1
那么在这里键名可以有空格吗? - Vipul Jain
3
@Vipul:是的,“这意味着您可以使用任何二进制序列作为密钥”,但在命令行中,您必须在该密钥周围加上引号,否则SET some key my value将无法工作,而SET "some key" "my value"将能够工作。 - j boschiero
3
Redis中键名中的冒号是否会创建索引? - Pankhuri Agarwal
4
@PankhuriAgarwal,冒号只是一个方便的分隔符。例如,一些图形用户界面通过冒号在树状结构中分组键。在Redis中,传统意义上没有索引。 - andreycha
12
允许的最大密钥大小为512 MB。在了解到1024字节长密钥是不好的想法后,这句话读起来像个笑话!我相信有一些情况可以使用512 MB的密钥,但我无法想象会是什么情况。 - gillytech

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接