我有一个现有的应用程序,其中包含大量使用Laravel文件驱动程序编写的缓存文件。它们遵循特定的目录和命名结构(例如):
cache/data/
2d/
6e/
2d6eece558d9143286c4a08bb5757bb2cb6e9h9kf如果有过期,文件的前10个字符就是unix时间中的过期时间戳。
1605235030a:3:{s:3:"price";s:6:"342.99"......
我想将我的整个缓存目录迁移到redis。如果做不到,我可以处理掉即将到期的那些,但我有一堆Cache::forever,理想情况下我们应该保留它们(以避免一些恼人的遗留问题)。Redis将密钥存储为纯文本,而不是哈希。如何迁移这些数据?加分,如果你可以这样做,为到期的缓存文件也。
显然,如果我们依赖于Cache::forever中的缓存项,那么我们需要改变工作方式(如果它是函数式数据,那么很可能将信息存储在DB中而不是缓存中),但是为了不丢失大量数据,这可能吗?
会话很好,它们在redis和文件缓存中的散列是一样的。
发布于 2021-01-27 00:21:42
我猜你现在解决了?
我正在考虑同样的挑战,因为我还没有找到解决方案,很快就会构建一些东西。对我来说,解决方案的方向是将两个缓存并行一段时间。即:
$value = Cache::store('redis')->remember('users', $seconds, function () {
return Cache::store('file')->pull('users', function () {
return DB::table('users')->get();
});
});通过在文件缓存上使用'pull‘,你可以看到当你的用户帮助填充redis时,它的大小会减小。
(ps - Tirta;确定缓存应该是完全一次性的,但这并不意味着它们是免费的。迁移可能比替换成本更低)
https://stackoverflow.com/questions/64814779
复制相似问题