命名约定和Redis密钥的有效字符

and*_*ndy 57 redis

我想知道哪些字符在Redis密钥中被认为是有效的.我用谷歌搜索了一段时间,找不到任何有用的信息.

与Python类似,有效的变量名应该属于该类[a-zA-Z0-9_].Redis密钥有哪些要求和约定?

Wil*_*ill 96

这里回答部分内容,但这并不完全重复,因为您要询问允许的字符以及约定.

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

  • 这就是我想要的. (3认同)
  • @Vipul:是的,“这意味着您可以使用任何二进制序列作为键”,尽管在命令行上您必须在该键周围加上引号,否则`SET some key my value` 将不起作用,而`SET “一些关键”“我的价值”`会。 (3认同)
  • 键名中的 ':' 是否会在 Redis 中创建索引? (3认同)
  • @PankhuriAgarwal 不,冒号只是一个方便的分隔符。例如,某些 GUI 以冒号对树状结构中的键进行分组。而且Redis没有传统意义上的索引。 (3认同)
  • `允许的最大密钥大小是 512 MB。` <-- 在阅读了有关 1024 字节长密钥是坏主意的所有内容后,这听起来就像一个笑话!我确信有一个用例,但我无法想象那会是什么。 (3认同)