Ich bin heute während der Entwicklung auf ein Problem gestoßen. Das System betreibt häufig Benutzer und Benutzergruppen, daher habe ich vor, diese beiden im Memcache zu speichern. Meine ursprüngliche Idee war, es aus der Datenbank herauszufinden und direkt in einen Schlüssel einzugeben. (Wenn ich beispielsweise die Benutzergruppeninformationen überprüfe, füge ich alle Benutzergruppeninformationen in user_group ein.)
Ein Problem, auf das ich jetzt stoße, ist, dass ich, wenn ich eine neue Benutzergruppe hinzufügen möchte, den ursprünglichen Schlüssel löschen, die Datenbank einmal lesen und ihn dann in den Cache von user_group legen muss. Das Gleiche gilt für die Löschung. Das Gleiche gilt für Modifikationen.
Dann stellt sich die Frage: Gibt es eine Möglichkeit, eine bestimmte Benutzergruppe zu speichern? Ich verwende beispielsweise die ID als Kennung, user_group1 ist der Cache der Administratoren und user_group2 ist der Cache der normalen Benutzer. Wäre das nicht besser? Wenn der Cache wirklich so platziert ist, wie kann er dann beim Lesen der Daten (dh wenn der Inhalt zu Beginn aus der Datenbank ausgelesen wird) einzeln in den Memcache geschrieben werden?
Vielen Dank an alle^^
Ich bin heute während der Entwicklung auf ein Problem gestoßen. Das System betreibt häufig Benutzer und Benutzergruppen, daher habe ich vor, diese beiden im Memcache zu speichern. Meine ursprüngliche Idee war, es aus der Datenbank herauszufinden und direkt in einen Schlüssel einzugeben. (Wenn ich beispielsweise die Benutzergruppeninformationen überprüfe, füge ich alle Benutzergruppeninformationen in user_group ein.)
Ein Problem, auf das ich jetzt stoße, ist, dass ich, wenn ich eine neue Benutzergruppe hinzufügen möchte, den Originalschlüssel löschen, die Datenbank einmal lesen und ihn dann in den Cache von user_group legen muss. Das Gleiche gilt für die Löschung. Das Gleiche gilt für Modifikationen.
Dann stellt sich die Frage: Gibt es eine Möglichkeit, eine bestimmte Benutzergruppe zu speichern? Ich verwende beispielsweise die ID als Kennung, user_group1 ist der Cache der Administratoren und user_group2 ist der Cache der normalen Benutzer. Wäre das nicht besser? Wenn der Cache wirklich so platziert ist, wie kann er dann beim Lesen der Daten (dh wenn der Inhalt zu Beginn aus der Datenbank ausgelesen wird) einzeln in den Memcache geschrieben werden?
Vielen Dank an alle^^
Ihre Ideen sind umsetzbar und Ihre Sorgen unnötig.
Weil der php
-Treiber von memcached
automatisch serialize
und unserialize
für die Daten ausführt, sodass Sie sich darüber überhaupt keine Sorgen machen müssen.
Beispiel
<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>