aprivette / laravel-cache-refs
Laravel Artisan 命令,用于从 Redis 中清除缓存标签引用
1.0.1
2023-03-09 20:18 UTC
Requires
- php: ^7.4|^8.0
- illuminate/console: ^7.0|^8.0|^9.0
- illuminate/support: ^7.0|^8.0|^9.0
README
Laravel Artisan 命令,用于从 Redis 中清除缓存标签引用。
问题
你是否注意到大量以 standard_ref
或 forever_ref
为后缀的 Redis 集合正在阻塞你的缓存数据库?
如果你使用了 Laravel 的缓存标签功能,但无法定期清除整个缓存,你将不可避免地在 Redis 数据库中积累垃圾。 为了使这个功能正常工作,Laravel 为每个标签创建 Redis 集合,其中包含指向分配给该标签的每个键的成员。
例如,假设你有一个带有 "animal" 标签的缓存键 "dog"。如果 "dog" 的 Redis 键过期,该键的集合成员仍然存在于 "animal" 标签中。
解决方案
此命令旨在在遇到此问题的应用程序的计划任务中运行。 它遍历所有缓存引用,并确保引用集合成员指向现有键。它将删除指向不存在目标键的任何集合成员。
用法
安装
composer require aprivette/laravel-cache-refs
安装后,你可以像这样运行命令
php artisan refs:purge
此命令默认为 cache
连接。如果你有其他缓存连接,可以指定它。
php artisan refs:purge custom_redis_connection
注意事项
此包仅适用于 Redis 存储。
未来改进
可能需要用扫描替换键查询以节省内存,这对于大型 Redis 存储来说可能很重要。但我还没有遇到这个问题。