我在自定义提供程序中使用redis类,但在服务器上不起作用。
本地没有任何问题,但我不明白为什么它不能在服务器上工作。
使用artisan命令时会出现此错误。
“predis\clientexception:命令'exists'不是已注册的redis命令。
网址为/var/www/vhosts/website.com/laravel\u folder/website/vendor/predis/predis/src/profile/redisprofile。php:88 84|{85 |$commandid=strtoupper($commandid);86 | 87 |如果(!isset($this->commands[$commandid])){
88 | throw new clientexception(“命令'$commandid'不是注册的redis命令。”);89 |}90 | 91 |$commandclass=$this->命令[$commandid];92 |$command=新建$commandclass();
异常跟踪:
1 predis\profile\redisprofile::createcommand(“exists”)/var/www/vhosts/website.com/laravel\u folder/website/vendor/predis/predis/src/client。php:323
2 predis\client::createcommand(“exists”)/var/www/vhosts/website.com/laravel\u 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;
}
请帮帮我。
1条答案
按热度按时间ki0zmccv1#
这是一个区域设置问题。我相信你在应用程序中使用的是土耳其语区域设置。这就导致了
strtoupper
功能。有一个类似的问题,你可以在这里看看:https://github.com/nrk/predis/issues/372
作为一个解决方案,如果它在你的情况下是可以接受的,你可以尝试改变当地的。或者正如本期所建议的,您可以使用laravel提供的redis facade。
Redis::EXISTS
就像这样。