Heim  >  Artikel  >  Backend-Entwicklung  >  Tipps für Memcache zum Zwischenspeichern von Inhalten?

Tipps für Memcache zum Zwischenspeichern von Inhalten?

WBOY
WBOYOriginal
2016-08-04 09:20:01913Durchsuche

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^^

Antwortinhalt:

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>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn