오늘 개발 중에 문제가 발생했습니다. 시스템이 사용자와 사용자 그룹을 자주 운영하므로 이 두 가지를 Memcache에 저장할 계획입니다. 나의 초기 아이디어는 데이터베이스에서 그것을 찾아 키에 직접 넣는 것이 었습니다. (예를 들어 사용자 그룹 정보를 확인하면 user_group에 모든 사용자 그룹 정보를 입력합니다.)
지금 직면한 문제는 새 사용자 그룹을 추가하려면 원래 키를 삭제하고 데이터베이스를 한 번 읽은 다음 user_group의 캐시에 넣어야 한다는 것입니다. 삭제도 마찬가지입니다. 수정도 마찬가지입니다.
그렇다면 특정 사용자 그룹을 저장하는 방법이 없을까요? 예를 들어 식별자로 id를 사용하고 user_group1은 관리자 캐시, user_group2는 일반 사용자 캐시입니다. 이게 더 좋지 않을까요? 캐시가 정말 이렇게 배치되어 있다면 데이터를 읽을 때(즉, 처음에 데이터베이스의 내용을 읽을 때) 어떻게 하나씩 Memcache에 쓸 수 있을까요?
모두들 감사합니다^^
오늘 개발 중에 문제가 발생했습니다. 시스템이 사용자와 사용자 그룹을 자주 운영하므로 이 두 가지를 Memcache에 저장할 계획입니다. 나의 초기 아이디어는 데이터베이스에서 그것을 찾아 키에 직접 넣는 것이 었습니다. (예를 들어 사용자 그룹 정보를 확인하면 user_group에 모든 사용자 그룹 정보를 입력합니다.)
지금 직면한 문제는 새 사용자 그룹을 추가하려면 원래 키를 삭제하고 데이터베이스를 한 번 읽은 다음 user_group의 캐시에 넣어야 한다는 것입니다. 삭제도 마찬가지입니다. 수정도 마찬가지입니다.
그렇다면 특정 사용자 그룹을 저장하는 방법이 없을까요? 예를 들어 식별자로 id를 사용하고 user_group1은 관리자 캐시, user_group2는 일반 사용자 캐시입니다. 이게 더 좋지 않을까요? 캐시가 정말 이렇게 배치되어 있다면 데이터를 읽을 때(즉, 처음에 데이터베이스의 내용을 읽을 때) 어떻게 하나씩 Memcache에 쓸 수 있을까요?
모두들 감사합니다^^
당신의 아이디어는 실현 가능하며 걱정할 필요가 없습니다.
php
의 memcached
드라이버가 자동으로 데이터에 대해 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>