Получить значение объекта из массива в кеше laravel - PullRequest
1 голос
/ 13 марта 2020

У меня есть такой массив в кэше Redis

127.0.0.1:6379> MGET laravel:campaign1107
1) "a:1:{s:21:\"unsubscriberCount1107\";i:2;}"
127.0.0.1:6379> 

Теперь мне нужно получить значение unsubscriber1107. Я пытался таким образом

 dd(cache()->get($arrayCacheKey[$cacheKey]));

, но это не работает. Как я могу получить доступ к этому объекту?

Мой код для установленного кэша

public function updateUnsubscriberCountCache($campaign_id, $type) 
{  
    $assoc = [];
    $arrayCacheKey = 'campaign'.$campaign_id.'';
    $cacheKey = 'unsubscriberCount'.$campaign_id.'';
    if($type == 'unsubscriberLogCount') {
        $cacheKey = 'unsubscriberCount'.$campaign_id.'';
         if( cache()->get($cacheKey) > 0) {
              cache()->increment($cacheKey);
              //cache()->forget($cacheKey); 
            } else {
                $total = UnsubscribeLog::select('unsubscribe_logs.*')->leftJoin('tracking_logs', 'tracking_logs.message_id', '=', 'unsubscribe_logs.message_id')->where('tracking_logs.campaign_id', '=', $campaign_id)->distinct('subscriber_id')->count('subscriber_id');
                 //cache()->forever($cacheKey, $total);
                $assoc[$cacheKey] = $total;
                cache()->forever($arrayCacheKey, $assoc);
            }
        }
    }

1 Ответ

0 голосов
/ 14 марта 2020

Вы сохраняете значение в виде массива, используя $arrayCacheKey, но ранее в коде вы пытаетесь получить к нему доступ, используя $cacheKey, значение которого отличается.

Если вы хотите получить значение unsubscriber1107 вам нужно будет использовать комбинацию обеих клавиш:

$campaignData = cache()->get($arrayCacheKey); //To get the array value from the cache
$count = $campaignData ? $campaignData[$cacheKey] : null; //get the count 

Выше предполагается, что va

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...