【问题标题】:Naming Convention and Valid Characters for a Redis KeyRedis 键的命名约定和有效字符
【发布时间】:2015-07-28 02:30:29
【问题描述】:

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

和 Python 一样,有效的变量名应该属于 [a-zA-Z0-9_] 类。 Redis 键的要求和约定是什么?

【问题讨论】:

    标签: redis


    【解决方案1】:

    部分内容已回答 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。

    【讨论】:

    • 那么我们可以在键名中有空格吗?
    • @Vipul:是的,“这意味着您可以使用任何二进制序列作为键”,尽管在命令行中您必须在该键周围加上引号,否则 SET some key my value 将不起作用,而SET "some key" "my value" 将。
    • 键名中的 ':' 是否会在 Redis 中创建索引?
    • @PankhuriAgarwal 不,冒号只是一个方便的分隔符。例如,一些 GUI 用冒号将键分组为树状结构。而且Redis没有传统意义上的索引。
    • The maximum allowed key size is 512 MB.
    猜你喜欢
    • 2011-10-21
    • 2021-07-04
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    相关资源
    最近更新 更多