分布式缓存服务 DCS-DCS使用建议:数据设计规范

时间:2024-05-16 15:04:16

数据设计规范

分类

原则

原则说明

级别

备注

Key相关规范

使用统一的命名规范。

一般使用业务名(或数据库名)为前缀,用冒号分隔。Key的名称保证语义清晰。

建议

例如,业务名:子业务名:id

控制Key名称的长度。

在保证语义清晰的情况下,尽量减少Key的长度。有些常用单词可使用缩写,例如,user缩写为u,messages缩写为msg。

建议

建议不要超过128字节(越短越好)。

禁止包含特殊字符(大括号“{}”除外)。

禁止包含特殊字符,如空格、换行、单双引号以及其他转义字符。

强烈建议

由于大括号“{}”为Redis的hash tag语义,如果使用的是集群实例,Key名称需要正确地使用大括号避免分片不均的情况。

Value相关规范

设计合理的Value大小。

设计合理的Key中Value的大小,推荐小于10 KB。

建议

过大的Value会引发分片不均、热点Key、实例流量或CPU使用率冲高等问题,还可能导致变更规格和迁移失败。应从设计源头上避免此类问题带来的影响。

设计合理的Key中元素的数量。

对于集合和列表类的数据结构(例如Hash,Set,List等),避免其中包含过多元素,建议单Key中的元素不要超过5000个。

建议

由于某些命令(例如HGETALL)的时间复杂度直接与Key中的元素数量相关。如果频繁执行时间复杂度为O(N)及以上的命令,且Key中的子Key数量过多容易引发慢请求、分片流量不均或热点Key问题。

选择合适的数据类型。

合理地选择数据结构能够节省内存和带宽。

建议

例如存储用户的信息,可用使用多个key,使用set u:1:name "X"、set u:1:age 20存储,也可以使用hash数据结构,存储成1个key,设置用户属性时使用hmset一次设置多个,同时这样存储也能节省内存。

设置合理的过期时间。

合理设置Key的过期时间,将过期时间打散,避免大量Key在同一时间点过期。

建议

设置过期时间时,可以在基础值上增减一个随机偏移值,避免在同一个时间点大量Key过期。大量Key过期会导致CPU使用率冲高。

support.huaweicloud.com/bestpractice-dcs/dcs-bp-191113001.html