标签: Redis
-
针对 Yii2 队列扩展 Redis 驱动中 info 命令显示 reserved 状态队列一直存在的问题,在确认系统日志无异常且还原队列作业代码后,虽能短暂恢复正常,但长时间运行后故障依旧。通过排查发现 attempts 选项生效但 reserved 状态仍积压,最终将 Supervisor 配置中的 numprocs 值调整为 2,启动多个 worker 后,该状态队列持续时间大幅缩短至 10 分钟左右,整体队列处理可在半小时内完成,问题得到有效解决。
-
针对阿里云 Redis 报错 Redis error ERR for redis cluster, eval/evalsha number of keys can’t be negative or zero 的问题,经参考开发者文档分析,这是由于云 Redis 集群对 Lua 脚本有限制,调用时必须携带 key,否则会直接返回错误。文章中采用了放弃使用阿里云 Redis 集群的方式使问题得以解决,并指出后续若要支持 Redis 集群,需要在程序层面进行调整。
-
本文介绍了在 Yii 2.0 中优化服务器健康检查实现的过程。通过分析源码发现,数据库检查中的 getIsActive() 方法是冗余的,直接使用 open() 方法即可。针对 Redis 连接,虽然 ping 命令常用于测试连接,但其实质仍需先执行 open()。经过错误密码测试验证后得出结论,为保持检测方式统一,无论是数据库还是 Redis,均应统一采用 open() 方法进行连接检查。
-
针对 Yii 2.0 中 Redis ActiveRecord 出现主键 ID 重复的问题,经排查发现是由用于存储索引的 Redis 键值重复导致。通过本地环境复现,确认该组件无法确保主键 ID 唯一性。最终决定放弃插入操作,仅执行更新逻辑,若 Redis 中记录不存在则响应 404,以此防止新数据产生重复,而对于已有的重复数据则需手动处理。
-
本文记录了在 Rancher 中通过克隆容器部署集群,并配置负载均衡验证流量分发的过程。针对命令行下 Redis 锁定频率过高的问题,通过调整执行间隔、优化事务同步时间及更新逻辑,成功降低了锁定频率并提升了执行性能。测试结果验证了在不同任务数量下的同步频率平均值符合预期的理论计算公式。
-
文章介绍了在 Yii 2.0 中利用 Docker、Supervisor 及 Redis 锁定机制实现控制台命令集群部署的方法。通过改造 Redis 锁定逻辑,在同步任务前获取锁,结束后释放锁,确保同一租户的同步任务在多台服务器间不重复执行,解决了冗余问题。测试验证了该方案能显著提升任务处理性能与同步即时性,同时给出了同步间隔的计算公式及容器数量建议。
-
本文介绍了在 Yii 2.0 生产环境中开启 Schema 缓存以优化性能的操作,包括修改配置文件、验证 Redis 缓存生成及手动清理缓存的命令。测试发现清除 Schema 缓存后并非立即刷新数据,而是在下次调用相关表结构时触发更新。文章还说明了在 Docker 容器部署和 Rancher 升级时执行数据库迁移与清理命令的流程。性能测试对比显示,开启缓存后接口并发峰值反而略有下降,因此决定暂时保留该配置不回退。
-
针对 Yii 2.0 项目中出现的调用未知方法 yii2tech\\ar\\softdelete\\SoftDeleteBehavior::isTransactional() 报错问题,文章分析指出这是因为 Redis 模型使用了软删除操作所致。通过将代码逻辑修改为使用硬删除操作,问题得以解决。最终结论是 yii2tech\\ar\\softdelete\\SoftDeleteBehavior 并不支持 Redis 的 AR 模型进行软删除。
-
本文针对 Yii 2.0 框架下需要基于 MySQL ActiveRecord 与 Redis ActiveRecord 同时查询资源的问题,实现了对 Redis 中存储的用户昵称进行模糊搜索的功能。鉴于 Redis ActiveRecord 不支持 like 操作符,文章采用先通过 MySQL 获取用户 ID 列表,再利用 in 操作符从 Redis 读取对应昵称数组,最后使用 PHP 函数模拟 SQL LIKE 语句进行过滤。测试结果表明,该方案能够正确生成符合预期的 SQL 语句并获取准确的查询结果。
-
本文针对基于 Yii 2.0 的 Supervisor 命令行脚本在持续运行期间占用内存过高的问题进行了分析与解决。通过监控 Docker 容器资源,定位了 Redis AR 模型查询和高频执行导致的内存增长。优化措施包括使用 unset() 释放变量、利用 asArray() 获取数组形式结果、修复 HTTP 客户端 400 错误以及引入同步标识控制执行频率。最终测试表明,调整查询方式和执行策略有效降低了内存占用,证明了优化方案的可行性。
