복붙노트

[REDIS] Laravel - 자주 업데이트와 캐싱 웅변

REDIS

Laravel - 자주 업데이트와 캐싱 웅변

그것은 자주 수정되는 개체에 대한 캐싱을 사용할 수 있습니까? 예를 들어, 우리는 블로그 게시물 개체가 있다고 가정 해 봅시다, 그리고 자주 변경 (다른 사람의 사이)를 num_of_views 열이있다. 그것은 캐시 오브젝트를 파괴하고 그것을 다시하지 않고, 캐시와 DB에 둘 다 num_of_views 필드를 업데이트 할 수 있습니까? 그러나 나는 내가 동기화 문제에 대해 걱정, 수동으로 할 수 있습니다.

해결법

  1. ==============================

    1.네, 그렇습니다. 난 당신이 캐시를 어떻게하고 있는지 모르겠지만, 당신은 언제든지 캐시 인스턴스를 대체 할 수있다 :

    네, 그렇습니다. 난 당신이 캐시를 어떻게하고 있는지 모르겠지만, 당신은 언제든지 캐시 인스턴스를 대체 할 수있다 :

    public function updatePost($post_id, $num_of_views)
    {
        if (Cache::has('POST.'.$post_id))
        {
            $post = Cache::get('POST.'.$post_id);
        }
        else
        {
            $post = Post::find($post_id);
        }
    
        $post->num_of_views = $num_of_views;
    
        $post->save();
    
        Cache::put('POST.'.$post_id, $post);
    }
    
  2. ==============================

    2.아니, 슬프게도 그것을 할 수있는 좋은 방법이 아니다. 그러나 설명해 드리죠 ...

    아니, 슬프게도 그것을 할 수있는 좋은 방법이 아니다. 그러나 설명해 드리죠 ...

    그러나 실제로위한 좋은 이유가 - 캐시의 전체 이유는 다소 정적 데이터를 제공하는 과정을 가속화하는 것입니다. 예를 들어, 위키 백과는 90 %가 많은 사용자를 가지고 있기 때문에 역할을한다. 위키 피 디아 기사는 거의이며, 인기있는 사람의를 변경하지 캐싱을 의미하는 것은 서버 떨어져 약간의 부하를 유지할 수있는 좋은 솔루션입니다.

    귀하의 경우는 기본적으로 모든 요청을 캐시를 수정하고자 할 것입니다, 당신은 방법으로 뷰 수를 캐시해서는 안됩니다, 그것은 캐싱 기능은 거의 쓸모가 렌더링되는 것을 의미한다. 심지어 수정으로 매 2, 3 또는 10 요청 캐싱은 여전히마다 몇 요청을 다시 생성 캐싱 대신 서버 오프로드를 유지의 목적이 아니다해서 다소 쓸모가 없다.

    요청이 실제로 정규 라이브 게재 요청보다 더 많은 자원을 소요 캐시하면, 그래서 당신은 같은 변수에 데이터를 캐싱하는 경우에만 쓸모뿐만 아니라 서버와 직결 된 매우 문제가되지 않을 것이라고 상상할 수있는 것입니다.

    또 다른 문제는 당신 만 num_of_views을 변경하지만 그대로 객체의 나머지 부분을 유지하기 위해 제안,하지만 당신을 위해 무엇을 고려하지 않는 것은 당신이 실제로 캐시로 그렇게 할 수 없다는 것입니다. 이 간단한 키 'post_object_x'보통 base64로 또는 다른 이들처럼 암호화 된 문자열의 일종 인 값이다 - 그들은 방법 캐시 작품은 당신이 뭔가에있는 어떤 데이터를 압축한다는 것입니다.

    당신이 암호를 해독 한 다음 수정 그냥 빨리, 이는 다시 암호화하고 파괴하고 객체를 다시 같은 자원 집약적하지 않는 한 수단은 num_of_views 필드 자체는 실제로 캐시 자체에 존재하지 않습니다. 그래서 순수하게 기술적 인 관점에서도 그냥 가능합니다.

    나는 당신이 당신의 아이디어가 매우 작동하지 않는 이유를 볼 수 있었다 희망이 노출 수십억 대규모 사이트를하지 않는 이유는 과거의 어떤 카운터를 캐시 또한 세계에서 가장 좋은 생각이 아니다 - 심지어 당신은 단지 그것을해야 매우 높은 요구는 시간의 구체적 만 짧은 금액을 계산합니다.

  3. ==============================

    3.몇 가지 옵션이 있습니다 :

    몇 가지 옵션이 있습니다 :

    또한 BlogPost.id = 1234, 1 씩 증가 $ 볼 필요가 있음을 나타내는, 당신은 레디 스에서 카운터를 증가하는 1 & 2의 조합을 수행하고, 큐에 레코드를 푸시 할 수 있습니다.

    다니엘

  4. from https://stackoverflow.com/questions/25936441/laravel-caching-eloquent-with-frequent-updates by cc-by-sa and MIT license