redis-cli操作一切正常,使用predis获取不到数据

1. 运行环境

1). 当前使用的 Laravel 版本

Laravel 9.25.1

2). 当前使用的 php/php-fpm 版本

PHP 版本:8.1.8(NTS VC2019x64)
php-fpm 版本:未安装

3). 当前系统

Windows 10 64

4). 业务环境

开发环境 本机环境

5). 相关软件版本

Apache 2.4
redis 5.0

2. 问题

redis-cli操作一切正常,使用predis获取不到数据

3. 期望得到的结果

能够正常使用 redis

4. 您实际得到的结果?


    'redis' => [

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

        'options' => [
            'cluster' => env('REDIS_CLUSTER', 'redis'),
            'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
        ],

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

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

    ],
REDIS_CLIENT=predis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
REDIS_DB=0
REDIS_URL=tcp://127.0.0.1:6379?database=0

用redis-cli 执行结果

ex redis-cli

用predis 执行结果
php predis get

强调一个补充的问题!!

redis-cli 库 键名 等全都检查过
REDIS_CLIENT=phpredis 是没有问题的
REDIS_CLIENT=predis 就不行

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

这个最好的办法是你能用最小文件做一个复现。然后让大家进行调试,但是现在问题是predis 的版本也是未知的。

1年前 评论
zuowangfeng (楼主) 1年前
mowangjuanzi (作者) 1年前
zuowangfeng (楼主) 1年前
mowangjuanzi (作者) 1年前
zuowangfeng (楼主) 1年前
mowangjuanzi (作者) 1年前
zuowangfeng (楼主) 1年前
zuowangfeng (楼主) 1年前
讨论数量: 14

redis-cli:

config set slowlog-log-slower-than 0   //所有命令都会被定义成慢查询 
config set slowlog-max-len 10000   //保留1w条记录

做一些redis操作

slowlog get 10 // 查看前10条redis命令

Ps

'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),

问题出在这里, laravel 操作 rediskey,都会添加前缀的。

1年前 评论
zuowangfeng (楼主) 1年前

检查两边使用的库是否统一

1年前 评论

可能是larvel key有前缀导致 两个key 不一样

1年前 评论

redis-cli 库 键名 等全都检查过 REDIS_CLIENT=phpredis 是没有问题的 REDIS_CLIENT=predis 就不行

1年前 评论

这个最好的办法是你能用最小文件做一个复现。然后让大家进行调试,但是现在问题是predis 的版本也是未知的。

1年前 评论
zuowangfeng (楼主) 1年前
mowangjuanzi (作者) 1年前
zuowangfeng (楼主) 1年前
mowangjuanzi (作者) 1年前
zuowangfeng (楼主) 1年前
mowangjuanzi (作者) 1年前
zuowangfeng (楼主) 1年前
zuowangfeng (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!