首頁  >  文章  >  後端開發  >  memcache快取內容的技巧?

memcache快取內容的技巧?

WBOY
WBOY原創
2016-08-04 09:20:01911瀏覽

今天在開發中遇到一個問題,系統對使用者和使用者群組的操作比較頻繁,所以我打算將這2個存memcache。我剛開始的思路是從資料庫裡面查出來就直接放到一個key裡面。 (例如我查了用戶群組的訊息,就把用戶群組的所有資訊都放到user_group裡面)。
現在遇到一個問題就是如果我要新增一個使用者群組,就要把原來的key刪掉,在讀一次資料庫,再放到user_group這個快取中 。要刪除也是這樣。要修改也是這樣。

那麼問題來了,是不是有什麼方法可以存特定的一個使用者群組。例如我用id作為標識符,user_group1是管理員的快取 user_group2是普通用戶的快取。這樣是不會比較好呢?如果真是這樣放快取的話,那麼讀資料的時候(就是一開始從資料庫中把內容讀出來的時候)又怎麼一條條一個id地寫到memcache中?

謝謝各位啦^^

回覆內容:

今天在開發中遇到一個問題,系統對使用者和使用者群組的操作比較頻繁,所以我打算將這2個存memcache。我剛開始的思路是從資料庫裡面查出來就直接放到一個key裡面。 (例如我查了用戶群組的訊息,就把用戶群組的所有資訊都放到user_group裡面)。
現在遇到一個問題就是如果我要新增一個使用者群組,就要把原來的key刪掉,在讀一次資料庫,再放到user_group這個快取中 。要刪除也是這樣。要修改也是這樣。

那麼問題來了,是不是有什麼方法可以存特定的一個使用者群組。例如我用id作為標識符,user_group1是管理員的快取 user_group2是普通用戶的快取。這樣是不會比較好呢?如果真是這樣放快取的話,那麼讀資料的時候(就是一開始從資料庫中把內容讀出來的時候)又怎麼一條條一個id地寫到memcache中?

謝謝各位啦^^

你的想法是可行的,你的擔憂是多慮的。
因為,phpmemcached驅動會對資料自動進行serializeunserialize,你完全不必為此而煩心。
範例

<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