我如何解决“ Predis \ ClientException:命令'EXiSTS'不是注册的Redis命令。 ”错误?

问题描述 投票:0回答:1

我在自定义提供程序中使用redis类,但是在服务器上不起作用。

本地没有任何问题,但我不明白为什么它在服务器上不起作用。

当我使用工匠命令时出现此错误。

“ Predis \ ClientException:命令'EXiSTS'不是注册的Redis命令。

位于/var/www/vhosts/website.com/laravel_folder/website/vendor/predis/predis/src/Profile/RedisProfile.php:8884 | {85 | $ commandID = strtoupper($ commandID);86 |87 |如果(!isset($ this-> commands [$ commandID])){

88 |抛出新的ClientException(“命令'$ commandID'不是注册的Redis命令。”);89 | }90 |91 | $ commandClass = $ this-> commands [$ commandID];92 | $ command = new $ commandClass();

异常跟踪:

1 Predis \ Profile \ RedisProfile :: createCommand(“ EXiSTS”)/var/www/vhosts/website.com/laravel_folder/website/vendor/predis/predis/src/Client.php:323

2 Predis \ Client :: createCommand(“ exists”)/var/www/vhosts/website.com/laravel_folder/website/vendor/predis/predis/src/Client.php:314

请使用参数-v查看更多详细信息。“

我的代码:

public function boot()
    {
        $redis = new Redis();

        if ( !$redis->exists('activity_of_week') ) {
            $redis->set('activity_of_week',serialize( Activity::ofWeek(10) ));
        }

        if ( !$redis->exists('popular_companies') ) {
            $redis->set('popular_companies',serialize( TopRateCompanies::sortBy()->take(10) ));
        }

        $activityOfWeeks = $redis->get('activity_of_week');
        $popularCompanies = $redis->get('popular_companies');

        $popular = new PopularCategory();
        $popularCategories = $popular->take(10);

        View::composer('frontend.layout.footer', function ($view) use ($activityOfWeeks, $popularCompanies, $popularCategories) {
            /**
             * @var ViewAlias $view
             */

             $keys = [  'email'         => 'contact-email',
                        'facebook'      => 'facebook',
                        'instagram'     => 'instagram',
                        'twitter'       => 'twitter',
                        'youtube'       => 'youtube',
                        'phone'         => 'contact-phone',
                    ];

            $info = array_map( [$this,'contactInfo'],$keys );

            $view->with('contact', $info)
                    ->with('activityOfWeeks', $activityOfWeeks)
                    ->with('popularCompanies', $popularCompanies)
                    ->with('popularCategories', $popularCategories);
        });
    }

    public function contactInfo($key)
    {
        return Settings::where('key',$key)->firstOrFail()->value;
    }

请帮助我。

laravel redis command exists predis
1个回答
0
投票

这是一个语言环境问题。我相信您在应用中使用的是土耳其语区域设置。这会导致strtoupper功能出现问题。

存在类似问题,您可以在这里查看:https://github.com/nrk/predis/issues/372

作为解决方案,如果您的情况可以接受,则可以尝试更改本地。或根据问题的建议,您可以使用Laravel提供的Redis门面。 Redis::EXISTS像这样。

© www.soinside.com 2019 - 2024. All rights reserved.