今天在開發中遇到一個問題,系統對使用者和使用者群組的操作比較頻繁,所以我打算將這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中?
謝謝各位啦^^
你的想法是可行的,你的擔憂是多慮的。
因為,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>