簡體   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