例如,使用 Redis 时,一切都按预期工作。
cache()->store('redis')->remember("test_key", now()->addMinutes(), fn() => 'test_value');
使用 Laravel Octane Cache 时,Cache::remember() 方法不会存储值。 (返回空)
cache()->store('octane')->remember("test_key", now()->addMinutes(), fn() => 'test_value');
我做了另一个测试,似乎 Octane store 并不持久。如果我使用 put 那么 get 将立即收到该值,如果我使用 put 然后刷新页面,该值将为空。这仅适用于Octane 驱动程序。 Redis 存储 工作正常。
cache()->store('octane')->put("test_key", 'test_value', now()->addMinutes());
cache()->store('octane')->get("test_key"); => returns null
Redis 按预期工作。
cache()->store('redis')->put("test_key", 'test_value', now()->addMinutes());
cache()->store('redis')->get("test_key"); => returns test_value
我刚刚遇到了同样的问题。如果您尝试通过控制台使用“辛烷”缓存,它似乎不起作用。当我在控制器内(或从任何 Web 请求开始进程的任何地方)使用它时,它工作得很好。
我认为,如果您运行应用程序的任何命令,操作系统都会单独运行它。在这种情况下,你看不到 soole 缓存(因为它在不同的进程下),也无法使用 SwooleTable(例外:只有在使用 Swoole 服务器时才能访问表。)
Octane缓存使用swoole表。 Octane服务器重启后,所有swoole表缓存都会被删除。
有关 swoole 表的更多信息:https://wiki.swoole.com/en/#/memory/table