通过Laravel 5.3将数据存储在Redis缓存中无法正常工作

4
我刚刚把 Redis 驱动器连接到 Laravel 缓存中。 配置:
   'redis' => [
        'driver' => 'redis',
        'client' => 'predis',
        'cluster' => false,

        'default' => [
          'host' => env('REDIS_HOST', 'localhost'),
          'password' => env('REDIS_PASSWORD', null),
          'port' => env('REDIS_PORT', 6379),
          'database' => 0,
          'read_write_timeout' => 60,
        ],

一个基本的例子:
  Cache::store('redis')->put('bar', 'baz', 10);
  $val = Cache::get('bar');
  Log::Debug($val);`

它会返回一个空字符串。 如果我这样做:
  Cache::put('bar', 'baz', 10);
  $val = Cache::get('bar');
  Log::Debug($val);

它返回“baz”。但是,如果我删除put方法,在下一次尝试时它将再次返回空字符串。

CLI监视器:

1505914946.350596 [0 127.0.0.1:39102] "SELECT" "0" 1505914946.351143 [0 127.0.0.1:39102] "SETEX" "laravel:bar" "600000" "s:3:\"baz\";"

我哪里错了?

2个回答

2

看起来你的默认驱动程序不是redis。因此,当你调用put()get()而没有指定store()时,你正在从默认存储中获取和放置数据。

有两种方法可以解决这个问题。

要么将redis作为默认存储(请参阅config/cache.php)。然后这样做:

Cache::put('bar', 'baz', 10);
$val = Cache::get('bar');
Log::Debug($val);

只需这样做,你就可以访问 redis 存储库。

或者,在设置和获取时指定存储库:

Cache::store('redis')->put('bar', 'baz', 10);
$val = Cache::store('redis')->get('bar');
Log::Debug($val);

谢谢!第一个不起作用,但如果我在获取日期时指定存储位置,它就可以工作。干杯! - Tudor-Radu Barbu
当然可以。config/cache.php 文件中的 default 值是多少? - tptcat
'default' => env('CACHE_DRIVER', 'redis') - Tudor-Radu Barbu
在你的 .env 文件中,CACHE_DRIVER 设置为什么了? - tptcat
啊 - CACHE_DRIVER=array - Tudor-Radu Barbu
1
这就是为什么第一个对你不起作用。如果你想要默认值为redis,那么更改它,你就不必指定存储了。 - tptcat

1

.env文件中查找CACHE_DRIVER,然后进行编辑:

CACHE_DRIVER=redis //the default is file

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接