首页 > 解决方案 > Laravel 6 redis缓存无法获取缓存项目

问题描述

[更新]

我发现无论我尝试保存多少个密钥,laravel 只兑现 1 个密钥,但我总是只找到 1 个密钥“laravel:9a261d789b8265a6b0495ea5d87481b4589422b1”

我努力了

if (Cache::store('redis')->has('bar')) {
    echo ' - bar key cache exists - ';
}
else{
    echo  ' - bar key cache does not exist - ';
}
Cache::store('redis')->put('bar', 'baz', 600);
$value = Cache::get('bar');
echo $value; exit;

我总是明白 - bar key cache does not exist - baz为什么!???


我正在尝试在 Laravel Homestead localhost 中实现 redis 缓存,这是 .env

PP_NAME=mysite
APP_ENV=local
APP_KEY=base64:887AJ9PHxl7W/QS4g8VrMch6CTL4QMLneq4dHx2KhoE=
APP_DEBUG=true
APP_URL=https://mysite.test:44300
PAGINATE=10
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=mydb
DB_USERNAME=homestead
DB_PASSWORD=secret
CACHE_DRIVER=redis
SESSION_DRIVER=file
QUEUE_DRIVER=sync
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

和 config/database.php

'redis' => [

    'client' => 'predis',

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

    'cache' => [
        'host' => env('REDIS_HOST', '127.0.0.1'),
        'password' => env('REDIS_PASSWORD', null),
        'port' => env('REDIS_PORT', 6379),
        'database' => env('REDIS_CACHE_DB', 1),
    ],
],

在 config/cache.php

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

现在在控制器中:

$posts = Cache::remember('posts_cache', 600, function () use ($where) {
        return Post::where($where)->inRandomOrder()->paginate(3);
    });

$posts当我每次打印不同的帖子而不是缓存的 3 个帖子时。我跑

redis-cli monitor

并发现它正在缓存。我跑

redis-cli

然后

keys *

我明白了

1) "laravel:9a261d789b8265a6b0495ea5d87481b4589422b1"
2) "laravel:9a261d789b8265a6b0495ea5d87481b4589422b1:timer"

如何从 redis 中检索缓存的数据?我的代码有什么问题?

标签: cachingredislaravel-6homestead

解决方案


推荐阅读