>백엔드 개발 >PHP 튜토리얼 >Memcache의 콘텐츠 캐시 팁은 무엇입니까?

Memcache의 콘텐츠 캐시 팁은 무엇입니까?

WBOY
WBOY원래의
2016-08-04 09:20:01935검색

오늘 개발 중에 문제가 발생했습니다. 시스템이 사용자와 사용자 그룹을 자주 운영하므로 이 두 가지를 Memcache에 저장할 계획입니다. 나의 초기 아이디어는 데이터베이스에서 그것을 찾아 키에 직접 넣는 것이 었습니다. (예를 들어 사용자 그룹 정보를 확인하면 user_group에 모든 사용자 그룹 정보를 입력합니다.)
지금 직면한 문제는 새 사용자 그룹을 추가하려면 원래 키를 삭제하고 데이터베이스를 한 번 읽은 다음 user_group의 캐시에 넣어야 한다는 것입니다. 삭제도 마찬가지입니다. 수정도 마찬가지입니다.

그렇다면 특정 사용자 그룹을 저장하는 방법이 없을까요? 예를 들어 식별자로 id를 사용하고 user_group1은 관리자 캐시, user_group2는 일반 사용자 캐시입니다. 이게 더 좋지 않을까요? 캐시가 정말 이렇게 배치되어 있다면 데이터를 읽을 때(즉, 처음에 데이터베이스의 내용을 읽을 때) 어떻게 하나씩 Memcache에 쓸 수 있을까요?

모두들 감사합니다^^

답글 내용:

오늘 개발 중에 문제가 발생했습니다. 시스템이 사용자와 사용자 그룹을 자주 운영하므로 이 두 가지를 Memcache에 저장할 계획입니다. 나의 초기 아이디어는 데이터베이스에서 그것을 찾아 키에 직접 넣는 것이 었습니다. (예를 들어 사용자 그룹 정보를 확인하면 user_group에 모든 사용자 그룹 정보를 입력합니다.)
지금 직면한 문제는 새 사용자 그룹을 추가하려면 원래 키를 삭제하고 데이터베이스를 한 번 읽은 다음 user_group의 캐시에 넣어야 한다는 것입니다. 삭제도 마찬가지입니다. 수정도 마찬가지입니다.

그렇다면 특정 사용자 그룹을 저장하는 방법이 없을까요? 예를 들어 식별자로 id를 사용하고 user_group1은 관리자 캐시, user_group2는 일반 사용자 캐시입니다. 이게 더 좋지 않을까요? 캐시가 정말 이렇게 배치되어 있다면 데이터를 읽을 때(즉, 처음에 데이터베이스의 내용을 읽을 때) 어떻게 하나씩 Memcache에 쓸 수 있을까요?

모두들 감사합니다^^

당신의 아이디어는 실현 가능하며 걱정할 필요가 없습니다.
phpmemcached 드라이버가 자동으로 데이터에 대해 serialize, unserialize을 수행해주기 때문에 전혀 걱정하지 않으셔도 됩니다.

<code>// 0. 准备:
$cache = new Memcache();
$cache->connect('127.0.0.1', 11211);

// 1. 构造cache KEY
$cacheKey = 'user_group_admin';

// 2. 从缓存中获取数据
$data = $cache->get($cacheKey);
if ($data === false|| isChanged()){ 
    // 3. 缓存失效或者有变动,加载数据
    $userList = GetUserListByGroup('Admin');
    // 4. 保存数据到缓存中
    $cache->set($cacheKey, $userList);    
}

// 普通用户组类似
</code>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.