Как получить все значения из кеша, которые начинаются с определенного ключа - PullRequest
0 голосов
/ 31 октября 2018

В качестве заголовка я хочу получить все значения из кэша, которые начинаются с определенного значения.

Например, я считаю сообщения в своем проекте и храню их в кеше. Затем я хочу получить все сохраненные просмотренные значения в кеше ..

с помощью Session helper, он разделяет ключи по точкам и создает многомерный массив.

Таким образом, мы можем получить сохраненные элементы, такие как Session::get("views"), он дает всем сохраненным элементам используемые «представления». ключ.

Как мы можем сделать то же самое с Cache?

function get_all_cache(){
    $filesystem = \Cache::getStore()->getFilesystem();
    $cache_dir = (\Cache::getDirectory());
    $keys = [];
    foreach ($filesystem->allFiles($cache_dir) as $file1) {
        if (is_dir($file1->getPath())) {
            foreach ($filesystem->allFiles($file1->getPath()) as $file2) {
                $keys = array_merge($keys, [$file2->getRealpath() => unserialize(substr(\File::get($file2->getRealpath()), 10))]);
            }
        }
    }
    return $keys;
}

1 Ответ

0 голосов
/ 31 октября 2018

неправильный ответ, но я даю лучший ответ

try like this 


function get_all_cache(){
    if(\Cache::has('viewsValue')) {
          $keys =  \Cache::get('viewsValue');
    }else {
    $filesystem = \Cache::getStore()->getFilesystem();
    $cache_dir = (\Cache::getDirectory());
    $keys = [];
    foreach ($filesystem->allFiles($cache_dir) as $file1) {
        if (is_dir($file1->getPath())) {
            foreach ($filesystem->allFiles($file1->getPath()) as $file2) {
                $keys = array_merge($keys, [$file2->getRealpath() => unserialize(substr(\File::get($file2->getRealpath()), 10))]);
            }
        }
    }
    \Cache::put('viewsValue',$keys,60);   ///add key array into cache 
    }

  return $keys;
 }

обратите внимание в первый раз, если ключ не существует, затем сохраните значения кэша на ключах время всегда попадает в кеш, поэтому лучшая производительность

only work if not updated your keys array every time

для лучшего понимания кеша см.

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