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 就不行

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

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

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

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

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年前

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年前

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