【发布时间】:2015-07-28 02:30:29
【问题描述】:
我想知道在 Redis 键中哪些字符被认为是有效的。我用谷歌搜索了一段时间,找不到任何有用的信息。
和 Python 一样,有效的变量名应该属于 [a-zA-Z0-9_] 类。 Redis 键的要求和约定是什么?
【问题讨论】:
标签: redis
我想知道在 Redis 键中哪些字符被认为是有效的。我用谷歌搜索了一段时间,找不到任何有用的信息。
和 Python 一样,有效的变量名应该属于 [a-zA-Z0-9_] 类。 Redis 键的要求和约定是什么?
【问题讨论】:
标签: redis
部分内容已回答 here,但这并不完全是重复的,因为您询问的是允许的字符以及约定。
至于Redis键中的有效字符,the manual explains this completely:
Redis 密钥是二进制安全的,这意味着您可以使用任何二进制序列作为密钥,从“foo”之类的字符串到 JPEG 文件的内容。空字符串也是有效的键。
关于键的其他一些规则:
非常长的键不是一个好主意,例如 1024 字节的键不仅在内存方面是个坏主意,而且因为在数据集中查找键可能需要多次昂贵的键比较。即使手头的任务是匹配一个大值的存在,对它进行散列(例如使用 SHA1)也是一个更好的主意,尤其是从内存和带宽的角度来看。
非常短的键通常不是一个好主意。如果您可以改为写“user:1000:followers”,那么将“u1000flw”写为键几乎没有意义。后者更具可读性,与键对象本身和值对象使用的空间相比,增加的空间很小。虽然短键显然会消耗更少的内存,但您的工作是找到合适的平衡点。
尝试坚持使用模式。例如“object-type:id”是个好主意,如“user:1000”。点或破折号通常用于多词字段,如“comment:1234:reply.to”或“comment:1234:reply-to”。
允许的最大密钥大小为 512 MB。
【讨论】:
SET some key my value 将不起作用,而SET "some key" "my value" 将。
The maximum allowed key size is 512 MB.