繁体   English   中英

Redis 向服务器写入字节时出错。 [tcp://127.0.0.1:6379]

[英]Redis Error while writing bytes to the server. [tcp://127.0.0.1:6379]

我刚开始使用 redis 来缓存数据并运行查询。 我有两个函数,一个用于获取数据,另一个用于过滤缓存的数据。 这是我用于获取数据的 function 的外观:

if (Auth::user()->access_level == 'Admin' || Auth::user()->access_level == 'Donor') {
    $clients_number = Cache::remember('all_clients_number', 21600, function () {
       return ClientPerformance::whereNotNull('actual_clients')->get();
    });

    $all_clients_number = Cache::remember('all_clients_sum', 21600, function () use ($clients_number) {
      return $clients_number->sum('actual_clients');
   });

} else if(Auth::user()->access_level == 'Partner') {
       $clients_number = Cache::remember('all_partner_clients_number', 21600, function () {
          return ClientPerformance::whereNotNull('actual_clients')
            ->where('partner_id', Auth::user()->partner_id)
            ->get();
       });

     $all_clients_number = Cache::remember('all_partner_clients_sum', 21600, function () use ($clients_number) {
      return $clients_number->sum('actual_clients');
     });
}

我已经确认我的 redis 服务正在运行,并且我将 php.ini 文件中的最大 memory 限制更改为 4096。

这就是我的 function 过滤数据的样子:

   $selected_counties = $request->counties;

   if (Auth::user()->access_level == 'Admin' || Auth::user()->access_level == 'Donor') {

            $all_clients_number = Cache::remember('all_clients_number', 21600, function () {
                return ClientPerformance::whereNotNull('actual_clients');
            });
   } else if(Auth::user()->access_level == 'Partner') {
          $all_clients_number = Cache::remember('all_partner_clients_number', 21600, function () {
                return ClientPerformance::whereNotNull('actual_clients');
          });
   }

   if (!empty($selected_counties)) {
            $all_clients_number = $all_clients_number->where('county_id', $selected_counties);
   }

   $data["all_clients_number"]        = $all_clients_number->sum('actual_clients');

像这样的Cache::remember(key)从另一个 function 访问缓存数据是一种好习惯吗?这可能是为什么我无法向 redis 写入任何内容的原因,尽管事实上缓存的数据并不那么重。

任何建议或链接到我可以阅读如何有效访问缓存的 redit 数据的地方将不胜感激。 谢谢。

有一些解决方法可以解决这个问题:

  • 将 redis 服务器更新到版本 5 或 6
  • CONFIG SET maxmemory 0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM