【问题标题】:Store data in Redis Cache via Laravel 5.3 is not working通过 Laravel 5.3 在 Redis 缓存中存储数据不起作用
【发布时间】:2018-03-01 13:59:03
【问题描述】:

我刚刚将 redis 驱动程序附加到 Laravel cache

配置:

   '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\";"

我哪里弄错了?

【问题讨论】:

    标签: php laravel caching redis


    【解决方案1】:

    您的默认驱动程序似乎不是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);
    

    【讨论】:

    • 谢谢!第一个不起作用,但如果我在获得日期时指定商店,它会起作用。干杯!
    • 当然可以。你的defaultconfig/cache.php 中的价值是多少?
    • 'default' => env('CACHE_DRIVER', 'redis')
    • 在您的.env 中,CACHE_DRIVER 设置为什么?
    • 这就是为什么第一个不适合你的原因。如果您确实希望您的默认值为 redis,请更改它并且您不必指定商店。
    【解决方案2】:

    .env中找到CACHE_DRIVER,然后进行编辑:

    CACHE_DRIVER=redis //the default is file
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-05
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 2018-02-10
      • 1970-01-01
      • 2017-04-14
      • 2018-01-30
      相关资源
      最近更新 更多