我在自定义提供程序中使用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;
}
请帮助我。
这是一个语言环境问题。我相信您在应用中使用的是土耳其语区域设置。这会导致strtoupper
功能出现问题。
存在类似问题,您可以在这里查看:https://github.com/nrk/predis/issues/372
作为解决方案,如果您的情况可以接受,则可以尝试更改本地。或根据问题的建议,您可以使用Laravel提供的Redis门面。 Redis::EXISTS
像这样。