Prämisse: Da sich dieser Artikel hauptsächlich auf die Verwendung von Redis in thinkPHP5 konzentriert, gibt es keine spezielle Erklärung zur Installation von Redis, aber hier ist eine kleine Erinnerung Stellen Sie nach der Installation von Redis sicher, dass Sie die Erweiterung php.ini aktivieren, da Sie Redis sonst immer noch nicht verwenden können.
1. Schüler, die ThinkPHP5 verwenden können, wissen, dass TinkPHP5 die Cache-Klasse kapselt. Wir müssen nur den Cache in /application/config.php ausfüllen wird nach Eingabe der Cache-Konfigurationselemente verwendet (wie unten gezeigt).
2. Aus der Datei /thinkphp/library/think/cache/driver/Redis.php können wir ersehen, dass der hier gekapselte Redis-Cache dies nur kann Die Verwendung von Redis-Strings-Basistypen funktioniert nicht, wenn Sie zusammengesetzte Datentypen wie Hashes oder Warteschlangen verwenden möchten.
Wenn Sie sich die Cache-Klasse/thinkphp/library/think/cache/Driver.php ansehen, werden Sie feststellen, dass die Handler-Methode ein Handle zurückgibt, sodass wir dieses Handle nur dort erhalten müssen, wo wir Redis verwenden Um alle Daten des Redis-Typs zu verwenden, können Sie die Get-Handle-Methode getHandler
/** * 返回句柄对象,可执行其它高级方法 * * @access public * @return object */ public function handler() { return $this->handler; }
/* * 获取句柄 * @param */ public static function getHandler() { return self::init(); }
Abbildung:
# 🎜 🎜#// 创建数据 $redis->set('key', 'value');// 获取数据 $value = $redis->get('key'); echo $value . PHP_EOL;// 修改数据,与创建数据一致,即覆盖数据 $redis->set('key', 'value2'); echo $redis->get('key') . PHP_EOL;// 追加数据 $redis->append('key', '_value2'); echo $redis->get('key') . PHP_EOL;// 删除数据 $redis->del('key'); // $redis->delete('key'); var_dump($redis->get('key'));// 创建数据,带有效期 $redis->set('timeout_key', 'timeout_value', 5); $redis->setex('timeout_key', 5, 'timeout_value'); // 获取数据的有效期 echo $redis->ttl('timeout_key') . PHP_EOL;// 判断是否已经写入,未写入则写入 $redis->set('unique_key', 'unique_value'); if (!$redis->setnx('unique_key', 'unique_value')) { echo $redis->get('unique_key') . PHP_EOL; }// 批量创建 $multi = ['key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3']; $redis->mset($multi);// 批量获取 $result = $redis->mget(array_keys($multi)); var_dump($result);
List(List)
Eine Liste ist eine einfache Liste von Zeichenfolgen, sortiert in der Einfügereihenfolge. Sie können ein Element am Kopf (links) oder am Ende (rechts) der Liste hinzufügen. Listentypen werden häufig in Messaging-Warteschlangendiensten verwendet, um den Nachrichtenaustausch zwischen mehreren Programmen zu erleichtern. Jede Liste kann bis zu etwa 4 Milliarden Elemente oder 2^32-1 Elemente speichern.
Illustration:
// 创建 hash 表 // 向名字叫 'hash' 的 hash表 中添加元素 ['key1' => 'val1'] $redis->hSet('hash', 'key1', 'val1');// 获取 hash表 中键名是 key1 的值 echo $redis->hGet('hash', 'key1') . PHP_EOL;// 获取 hash表的元素个数 echo $redis->hLen('hash') . PHP_EOL;// 获取 hash表 中所有的键 $keys = $redis->hKeys('hash'); var_dump($keys);// 获取 hash表 中所有的值 $vals = $redis->hVals('hash'); var_dump($vals);// 获取 hash表 中所有的键值对 // 不推荐使用这种方法获取全部数据,会导致服务器执行超时,推荐方法后边会详细介绍 // $all = $redis->hGetAll('hash'); // var_dump($all);// 判断 hash 表中是否存在键名是 key2 的元素 $bool = $redis->hExists('hash', 'key2'); echo $bool ? '存在' : '不存在' . PHP_EOL;// 批量添加元素 $redis->hMset('hash', ['key2' => 'val2', 'key3' => 'val3']);// 批量获取元素 $hashes = $redis->hMGet('hash', ['key1', 'key2', 'key3']); var_dump($hashes);// 删除 hash表 $redis->del('hash');
Redis‘ Set ist vom Typ String Ungeordnete Sammlung.
Wie eine Liste ist sie sehr effizient beim Einfügen und Löschen sowie beim Bestimmen, ob ein Element vorhanden ist.
Der größte Vorteil von Mengen besteht darin, dass sie Schnitt-, Vereinigungs- und Differenzoperationen durchführen können.
Die maximale Anzahl an Elementen, die ein Set enthalten kann, beträgt 4294967295 (mehr als 4 Milliarden). Sammlungen werden über Hash-Tabellen implementiert, sodass die Komplexität des Hinzufügens, Löschens und Suchens O(1) ist. Illustration:// 向队列左侧加入元素 $redis->lPush('lists', 'X'); $redis->lPush('lists', 'X'); // 向队列右侧加入元素 $redis->rPush('lists', 'Z');// 将索引为1的数据修改为 Y $redis->lSet('lists', 1, 'Y');// 获取 list 长度 $length = $redis->lLen('lists'); echo $length;// 遍历 list $lists = $redis->lRange('lists', 0, $length - 1); dump($lists);// 从左侧出队一个元素(获取并删除) $x = $redis->lPop('lists'); echo $x . PHP_EOL; // 从右侧出队一个元素(获取并删除) $z = $redis->rPop('lists'); echo $z . PHP_EOL;// 获取左侧第一个元素 $y = $redis->lIndex('lists', 0); echo $y . PHP_EOL;// 删除队列 $redis->del('lists');
zset (geordneter Satz)
Redis zset ist dasselbe wie set Es ist auch eine Sammlung von Elementen vom Typ String und erlaubt keine doppelten Mitglieder.
Der Unterschied besteht darin, dass jedem Element eine doppelte Typbewertung zugeordnet ist.
redis verwendet Scores, um die Mitglieder der Menge von klein nach groß zu sortieren.
// 创建集合 $redis->sAdd('sets', 'value1', 'value2'); // 以数组形式创建集合 $redis->sAddArray('sets2', ['value1', 'value2', 'value3']);// 取两个集合的并集 $union = $redis->sUnion('sets', 'sets2'); // 取两个集合的差集 $diff = $redis->sDiff('sets', 'sets2'); // 取两个集合的交集 $inter = $redis->sInter('sets', 'sets2');var_dump($union, $diff, $inter);// 获取集合数量 $card = $redis->sCard('sets'); echo $card . PHP_EOL;// 获取集合中全部元素 // 不推荐使用这种方法获取全部数据,会导致服务器执行超时,推荐方法后边会详细介绍 $sets = $redis->sMembers('sets'); var_dump($sets);// 判断元素是否是集合中的成员 $isMember = $redis->sIsMember('sets', 'value2'); var_dump($isMember);// 删除集合中的元素 $redis->sRem('sets', 'value2'); var_dump($redis->sMembers('sets'));// 随机获取一个元素 echo $redis->sRandMember('sets');// 随机获取一个元素并从集合中删除 echo $redis->sPop('sets');// 删除集合 $redis->del('sets', 'sets2');
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Redis in ThinkPHP5. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!