Laravel 8 有配置文件
config\session.php
这个文件有2个参数要存储
'driver' => env('SESSION_DRIVER', 'file'),
和
'store' => env('SESSION_STORE', null)
两者都可以是
"apc"
、"dynamodb"
、"memcached"
、"redis"
我看到的唯一区别是“司机”也可以是
"file"
、"cookie"
、"database"
、"array"
请告诉我有什么区别以及为什么我们有 2 个参数?
本质上,它允许您从
CACHE_STORE
中配置单独的 SESSION_STORE
。
假设您有 APIv1,您在 Redis 中使用加密的缓存密钥来缓存查询,同时也在 Redis 中缓存您的用户会话。
假设您想要推出 APIv2 并希望清除所有缓存的查询,但不想注销所有用户。
如果您的
CACHE_STORE
和 SESSION_STORE
是 Redis 存储的同一个实例,则在不清除这两个存储的情况下无法运行 php artisan cache:clear
。寻找您想要清除的所有加密缓存密钥将非常困难且耗时。
但是,如果您在单独的 Redis 存储上设置用户会话,则可以放心运行它。
这是为什么有人会使用
CACHE_STORE
或 SESSION_STORE
的示例,其中每个都可以指向您在 config/database.php
中配置的单独的 Redis 数据库/实例。
有点晚了,但我今天注意到了这一点。 看起来 Laravel 在会话中使用缓存,因此 SESSION_STORE 就是这个缓存存储。如果您转到缓存配置文件,您将看到这些存储。所以就是定义一个特定的缓存存储的缓存配置文件。这独立于 SESSION_DRIVER 和 SESSION_CONNECTION(数据库配置文件连接)