兰州在线

技术分享:Redis规范

redis功能强大,数据类型丰富,系统速度快,无法忍受疯狂的滥用。通过禁用某些高风险功能并悬挂开发的束缚,企业能够以简洁,多样的思维方式来思考问题,而不是将其与某些实现绑定。

Redis根据应用程序有不同的持久性和驱逐策略。因此,在使用和申请Redis群集之前,请明确将其用于缓存或存储。 Redis集群具有主从模式和集群模式,每种模式都有优点和缺点。以下规范不区分群集模式。我们根据使用场景和操作限制来解释它们。

使用规范

冷热数据差异化

虽然Redis支持持久性,但在Redis中存储所有数据非常昂贵。建议将热数据(例如超过5k的QPS)的数据加载到Redis中。低频数据可以存储在Mysql,ElasticSearch中。

业务数据分离

不要将无关的数据流量放在Redis中。一方面,它避免了业务交互,另一方面避免了单实例扩展,并且可以减少冲击表面并在发生故障时快速恢复。

邮件大小限制

由于Redis是单线程服务,因此消息被阻止并减慢速度。保持消息内容低于1KB是一个好习惯。严禁超过50KB的记录。如果消息太大,则会在磁盘持久存在时导致网络带宽和IO问题。

连接限制

频繁创建和破坏连接会浪费大量系统资源,并且限制将导致主机崩溃。确保使用正确的Redis客户端连接池配置。

缓存密钥设置到期时间

用作缓存的密钥必须设置到期时间。到期时间不尽可能长。请根据业务性质进行设置。注意单位的失败时间是秒,有些是毫秒,这很多学生不注意容易出错。

缓存不能具有中间状态

缓存只应用于缓存。删除后,不应更改业务逻辑,也不能将其切入业务。首先,缓存的高可用性将影响业务;第二,深耦合会产生不可预测的影响;第三,它会对维护线产生影响。

扩展方法首选客户端哈希

小程序甚至是

如果单个redis群集无法为您的数据提供服务,请不要担心扩展redis群集(包括MS和群集)。群集越大,在状态同步和持久性方面的性能越差。客户端哈希?紫扔糜谌杭鸱帧@纾萦没d,10个群集和用户结束号0在第一个群集中。

运营限制

不要使用密钥

Keys命令效率极低,是一种阻止其他正常命令的O(N)操作。在集群上,它可能是灾难性的操作。这是严格禁止的。 DBA应重命名此命令并从root用户禁用它。

严禁冲洗

flush命令清除所有数据并且是高风险操作。这是严格禁止的。 DBA应重命名此命令,从根源禁用它,并且只有DBA可以运行。

不要用作消息队列

如果没有非常特殊的要求,Redis被严格禁止作为消息队列。 Redis用作消息队列,在容量,网络,效率和功能方面存在许多问题。对于消息队列,请使用高通Kafka或高可靠性RocketMQ。

严格禁止设置一系列批处理操作

Redis除了网络延迟之外,如此快速,慢的查询属于这些批量操作功能。大多数在线问题都是由这些功能引起的。

1. [zset]不在没有范围的情况下对zset进行操作

ZRANGE,ZRANGEBYSCORE和其他操作ZSET的函数,严格禁止使用ZRANGE myzset 0 -1等。请指定范围,例如ZRANGE myzset 0 100.如果您不确定长度,可以使用ZCARD判断长度

2,[hash]严格禁止将HGETALL用于大数据量密钥

HGETALL会过多地取出相关的HASH号码,这也会导致阻塞,请确保业务可控。如果您不确定长度,可以使用HLEN确定长度

3. [关键] Redis集群集群的mget操作

Redis Cluster的MGET操作将数据聚合到每个片段中。与传统的MS架构相比,性能会下降很多。请提前按下并评估

4. [其他]严禁使用一些聚合操作,如sunion,sinter,sdiff等。

禁用选择功能

select函数用于切换数据库。对于用户来说,这是一个非常容易的问题。群集模式不支持多个数据库,并且没有增益,并且已禁用。

禁用交易

Redis本身非常快。如果没有必要,建议捕获异常并回滚。不要使用交易功能。很少有人这样做。

禁用lua脚本扩展

虽然lua脚本可以做很多看似很酷的事情,但它就像一个SQL存储过程引入了性能和一些难以维护的问题,被禁用了。

禁止长时间监控

监控功能可以快速查看redis正在执行的当前数据流,但要注意,高峰期内监控命令的长期阻塞会严重影响redis的性能。此命令不被禁止,但必须特别注意。

关键规范

Redis的密钥必须标准化,以便在遇到问题时可以轻松找到它。 Redis是没有方案的KV数据库,因此我们依赖约定来构建其方案语义。它的好处:

1,可以基于某种类型的密钥数据清理

2,可以根据某种类型的密钥更新数据

3,能够理解某种键的关联和应用场景

4.准备统一和平台化并减少技术变革

通常,密钥需要具有以下维度:业务,密钥用法,变量等。每个维度由:分隔。以下是几个键:

的实例

用户:性别用户的性别

Msg: achi的用户发言次数

件,通过协议可以达到规范是集体发展的最高水平。 Redis使用更多,但也使用稳定性,给出点数限制,常规规则,生活将变得更好。通过直接封装redis客户端,它被直接阻止,效果更好。