laravel 内 redis 跨页面使用失效问题

在本地开发的 Laravel 应用中,遇到一个现象:使用 Redis 存储的数据无法在不同页面间共享,且无错误提示。问题源于配置文件中将 Redis 客户端设置为了 mock 模式,导致未实际调用 predis,从而无法正常读取数据。解决方法是确保 .env 和 database.php 中的 Redis 配置正确,避免使用 mock 客户端。Laravel 的 Redis 配置涉及 .env、database.php 和 cache.php 文件,要特别注意 client 配置和 connection 的设置,以确保正确连接和使用 Redis 服务。

问题描述:

本地开发时,用到 redis,一个页面通过 redis 存储数据,另一个页面读取 redis 数据,但是一直读取不到,又不报错?

一句话总结下这个问题:

就是 redis 无法跨页面使用,又不报错。

问题根源:

调试发现,是配置文件内,把 redis 客户端参数配置为 mock,所以在使用 redis 时没有真正触发 predis,所以不报错。

普及一下 redis 客户端,php 的 redis 客户端有多个,官方推荐的主要有二个:Predis,phpredis。Predis 是PHP编写的,phpredis 是 c 语言写的 PHP 扩展,phpredis 性能上略胜于 Predis,性能上不必太关注,常见的业务量和计算机的运行能力可以排队对性能的担忧。

关于 laravel 内 redis 配置,涉及到的文件如下:

.env

REDIS_CLIENT=predis

......
......

REDIS_HOST=localhost
REDIS_PASSWORD=null
REDIS_PORT=6379

我就是因为把 predis 配置为 mock,所以才发生了跨页面访问不到数据的问题。

database.php

    'redis' => [

        'client' => env('REDIS_CLIENT', 'phpredis'),

        'default' => [
            'url' => env('REDIS_URL'),
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', 6379),
            'database' => env('REDIS_DB', '0'),
        ],

        'redis-admin' => [
            'url' => env('REDIS_URL'),
            'host' => env('REDIS_HOST_FINAL', 'redis-admin'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', 6379),
            'database' => env('REDIS_DB', '0'),
        ],
    ]

注意 client 的配置,client 是 redis 客户端配置,如果 .env 文件内没有配置 REDIS_CLIENT,这里默认 phpredis 就会生效。

这里可以配置多个 redis 服务,可以根据自己的业务进行不同配置。

cache.php 

    'stores' => [

        ......

        'redis' => [
            'driver' => 'redis',
            'connection' => 'default',
        ],
    ],

这里的 connection 是用来指定默认 redis 服务,这里指定的是 default,default 可以改为其他的配置。 因为 redis 可以配置多个,使用时若不指定连接哪个 redis 服务,默认就是按这个配置连接的。

如果想连接其他 redis 服务,如下:

$redis = Redis::connection('redis-admin');
$redis->set('foo','bar');
echo $redis->get('foo');

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值