Heim > Artikel > Backend-Entwicklung > PHP implementiert die grundlegende Datenstruktur von Redis
Dieser Artikel stellt hauptsächlich die in PHP implementierte grundlegende Datenstruktur von Redis vor, die einen gewissen Referenzwert hat. Jetzt kann ich ihn mit allen teilen, die ihn benötigen.
Redis (REmote DIctionary Server) ist ein Open-Source-Protokolltyp, der in der Sprache ANSI C geschrieben ist, dem BSD-Protokoll entspricht, das Netzwerk unterstützt und Speicher sein kann -basierte und persistente Schlüsselwertdatenbank und bietet APIs in mehreren Sprachen
Redis wird oft als Datenstrukturserver bezeichnet, da der Wert (Wert) eine Zeichenfolge (String) sein kann. , ein Hash (Karte), Liste, Menge und geordnete Mengen (sortierte Mengen) und andere Typen
// Redis.php return [ 'host' => '127.0.0.1', 'port' => '6379' ]; // RedisTest.php $redis = new redis(); $redisConf = include 'Redis.php'; $redis->connect($redisConf['host'], $redisConf['port']);
// redis key操作 $redis->exists($key); // 判断key值是否存在 $redis->expire($key, 10); // 设置key在10秒后过期
// redis string 字符串 $redis->set($key, $val); $redis->incr($key); // key值+1,除非val是整数,否则函数执行失败 $redis->decr($key); // key值-1,同上 $redis->append($key, "ue"); // 追加key值内容 $redis->strlen($key); // 返回key值的长度 // 当第一次设置key值后,key值的数据类型就不能改变了。 $redis->del($key); // 删除key值
Redis-Liste (Liste)
Redis Hash ist eine Mapping-Tabelle vom Typ String aus Feld und Wert eignet sich Hash besonders zum Speichern von Objekten
- Jeder Hash in Redis kann 2^(32)-1 (mehr als 40 Milliarden) Schlüssel-Wert-Paare speichern
//redis hash 哈希 $redis->hset($key, 'field1', 'val1'); // 设置一个key-value键值对 $redis->hmset($key, array('field2'=>'val2', 'field3'=>'val3')); // 设置多个k-v键值对 $redis->hget($key, 'field2'); // 获取hash其中的一个键值 $redis->hmget($key, array('field2', 'field1')); // 获取hash的多个键值 $redis->hgetall($key); // 获取hash中所有的键值对 $redis->hlen($key); // 获取hash中键值对的个数 $redis->hkeys($key); // 获取hash中所有的键 $redis->hvals($key); // 获取hash中所有的值
Redis-Sammlung (Set)
- Redis-Liste ist eine einfache String-Liste,
Sortieren nach Einfügereihenfolge , Sie können den Kopf (links) oder das Ende (rechts) einer Elementliste hinzufügen
- Eine Liste in Redis kann bis zu 2^( 32)-1 speichern Element
// redis list 列表 $index = $start = 0; $redis->lpush($key, 'val1', 'val2'); // 在list的开头添加多个值 $redis->lpop($key); // 移除并获取list的第一个元素 $redis->rpop($key); // 移除并获取list的最后一个元素 $stop = $redis->llen($key) - 1; // 获取list的长度 $redis->lindex($key, $index); // 通过索引获取list元素 $redis->lrange($key, $start, $stop); // 获取指定范围内的元素
Redis bestellt Menge (sortierte Menge)
- Redis' Set ist vom Typ String-Sequenzsammlung. Set-Mitglieder sind eindeutig, was bedeutet, dass
doppelte Daten nicht im Set erscheinen können
- Sammlungen in Redis werden über Hash-Tabellen implementiert, sodass das Hinzufügen und Löschen die Suchkomplexität erhöht O(1)
- Eine Sammlung in Redis kann bis zu 2^(32)-1 Mitglieder speichern
// redis set 无序集合 $redis->sadd($key, 'val1', 'val2'); // 向集合中添加多个元素 $redis->scard($key); // 获取集合元素个数 $redis->spop($key); // 移除并获取集合内随机一个元素 $redis->srem($key, 'val1', 'val2'); // 移除集合的多个元素 $redis->sismember($key, 'val1'); // 判断元素是否存在于集合内
Redis HyperLogLog
- Redis geordnete Menge ist wie eine Menge auch eine Sammlung von Elementen vom Typ Zeichenfolge, und doppelte Mitglieder sind nicht zulässig
- Der Unterschied besteht darin, dass jedem Element
eine doppelte Typbewertung zugeordnet wird. Redis verwendet Scores, um die Mitglieder der Menge von klein nach groß zu sortieren
- Die Mitglieder der geordneten Menge sind einzigartig, aber die Punktzahl kann wiederholt werden
- Sätze werden durch Hash-Tabellen implementiert, sodass die Komplexität des Hinzufügens, Löschens und Suchens O(1) beträgt. Die maximale Anzahl von Mitgliedern in der Sammlung beträgt 2^(32)-1
// redis sorted set 有序集合 // 有序集合里的元素都和一个分数score关联,就靠这个分数score对元素进行排序 $redis->zadd($key, $score1, $val1, $score2, $val2); // 向集合内添加多个元素 $redis->zcard($key); // 获取集合内元素总数 $redis->zcount($key, $minScore, $maxScore); // 获取集合内分类范围内的元素 $redis->zrem($key, $member1, $member2); // 移除集合内多个元素
Das Obige ist der gesamte Inhalt dieses Artikels Hilfreich für das Lernen aller. Bitte beachten Sie weitere verwandte Inhalte auf der chinesischen PHP-Website.
- Redis HyperLogLog Ja Ein Algorithmus zur Erstellung von Kardinalitätsstatistiken (
Berechnung der Anzahl sich nicht wiederholender Elemente im Datensatz). Der Vorteil von HyperLogLog besteht darin, dass, wenn die Anzahl oder das Volumen der Eingabeelemente sehr, sehr groß ist, Der zur Berechnung der Kardinalität erforderliche Platz ist immer fest und klein
- In Redis kostet jeder HyperLogLog-Schlüssel nur 12 KB Speicher und die Kardinalität von fast 2^(64) verschiedenen Elementen kann berechnet werden. Dies steht in scharfem Gegensatz zu einer Sammlung, bei der bei der Berechnung der Kardinalität umso mehr Speicher verbraucht wird, je mehr Elemente vorhanden sind
- Da HyperLogLog die Kardinalität nur basierend auf den Eingabeelementen berechnet, und speichert nicht die Eingabeelemente selbst. Daher kann HyperLogLog nicht jedes Eingabeelement wie eine Sammlung zurückgeben.
$redis->pfAdd('key1', array('elem1', 'elem2'));// 添加指定元素到HyperLogLog中 $redis->pfAdd('key2', array('elem3', 'elem2'));// 将多个HyperLogLog合并为一个HyperLogLog $redis->pfMerge('key3', array('key1', 'key2')); $redis->pfCount('key3'); // 返回HyperLogLog的基数估计值: int(3)
Der Unterschied zwischen Define und Const in PHP
Interaktion zwischen PHP und Webseiten
Analyse der ob_start-Nutzung in PHP
Das obige ist der detaillierte Inhalt vonPHP implementiert die grundlegende Datenstruktur von Redis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!