Dieses Mal werde ich Ihnen den Anwendungsfall von Redis in NodeJS ausführlich erläutern. Was sind die Vorsichtsmaßnahmen für die Anwendung von Redis in NodeJS? .
Redis ist eine In-Memory-Datenbank mit sehr guter Leistung. Sie wird als Cache-Datenbibliothek zwischen der Anwendung und MySQL-Daten bereitgestellt, was die Leistung der Anwendung erheblich verbessern kann ist eine kurze Einführung in den NodeJS-Client. Das Demoprogramm für den Terminalbetrieb von Redis
Redis kann insgesamt 5 Datentypen speichern, nämlich String , Liste, Satz, drei Spalten und geordneter Satz; Hier werden wir uns nacheinander mit den Hinzufügungen, Löschungen und Änderungen dieser fünf Datentypen befassen:
https://
redis.io/download, die aktuelle stabile Version, die ich verwende, ist 4.0.9. Geben Sie nach dem Dekomprimieren das Verzeichnis redis-4.0.9 ein, führen Sie make && sudo make install aus und warten Sie wenige Minuten, um es zu installieren; 2, Redis-Start:
Führen Sie Redis-Server zum Starten aus, der Standardport ist 6379; Installieren Sie nodejs Client:
Erstellen Sie das Redis-Node-Verzeichnis. Führen Sie nach Yarn Init -y in diesem Verzeichnis den Befehl aus: Yarn Add Redis, um den Redis-Client von NodeJS zu installieren. Referenzdokument: https://github.com/ NodeRedis/node_redis
4. Führen Sie im Knotenverzeichnis „node“ auf dem Terminal aus, und Sie können den NodeJS-Code zum Testen reaktionsschnell auf dem Terminal ausführen Erstellen Sie zunächst einen Client und stellen Sie eine Verbindung zum Redis-Server her. Stellen Sie vor dem Ausführen des Client-Codes sicher, dass der Redis-Server ausgeführt wird. Der Standardport ist
const redis = require('redis'); const client = redis.createClient(); //默认连接localhost:6379,具体配置参数可以参考文档https://github.com/NodeRedis/node_redis
Wenn alles gut geht, haben wir einen Client erstellt, um eine Verbindung zum Redis-Server herzustellen. Nachfolgende Vorgänge werden am Client-Objekt ausgeführt.
1. String-TypObwohl es sich um einen String-Typ handelt, können unter anderem Strings, ganze Zahlen und Gleitkommazahlen gespeichert werden.
var res = client.set('name', 'abczhijia', (err, data) => { console.log('err: ', err, ' data: ', data); }); // err: null data: OK,res的值是true client.get('name', (err, data) => { console.log('err: ', err, ' data: ', data); }); // err: null data: abczhijia
Der Einfachheit halber definieren wir eine Callback-Funktion zur Ausgabe von Daten:
const cb = (err, data) => { console.log('err: ', err, ' data: ', data, ' data type: ', typeof data); }
Machen wir einen Test für ganze Zahlen:
client.set('age', 20, cb); //err: null data: OK data type: string client.get('age', cb); //err: null data: 20 data type: string
It Es ist ersichtlich, dass die Einstellung zwar eine Ganzzahl ist, bei der Ausgabe jedoch tatsächlich eine Zeichenfolge ist. Wenn Sie also Berechnungen durchführen möchten, müssen Sie die Konvertierung in der Rückruffunktion selbst durchführen
2. Listendatentyp//从右侧推入 client.rpush('friends', 'mike', 'jhon', cb); //err: null data: 2 data type: number client.lrange('friends', 0, -1, cb); //err: null data: [ 'mike', 'jhon' ] data type: object //从左侧推入 client.lpush('friends', 'sam', 'bob', cb); //err: null data: 4 data type: number client.lrange('friends', 0, -1, cb); // err: null data: [ 'bob', 'sam', 'mike', 'jhon' ] data type: object //从右侧弹出 client.rpop('friends', cb); //err: null data: jhon data type: string //从左侧弹出 client.lpop('friends', cb); //err: null data: bob data type: string //打印看看发生了啥 client.lrange('friends', 0, -1, cb); // err: null data: [ 'sam', 'mike' ] data type: object //查看索引位置的值 client.lindex('friends', 0, cb); // err: null data: sam data type: string //对列表进行裁剪 client.rpush('friends', 'tom', 'bryant', cb)// err: null data: 4 data type: number client.ltrim('friends', 1, 2, cb); //err: null data: OK data type: string client.lrange('friends', 0, -1, cb); //err: null data: [ 'mike', 'tom' ] data type: object
Beachten Sie hier, dass die Listenoperation einen oder mehrere Daten vom rechten rpush oder zusätzlich einen oder mehrere Daten vom linken lpush pushen kann; Sie müssen die Start- und Endposition angeben. Wenn Sie die gesamte Position erhalten möchten, können Sie die Endposition als -1 schreiben.
3. Sammlungsdatentyp
//往集合ids中加几个元素 client.sadd('ids', 1, 2, cb); //err: null data: 2 data type: number //查看集合元素 client.smembers('ids', cb); //err: null data: [ '1', '2' ] data type: object //从集合中删除元素 client.srem('ids', 2, cb); // err: null data: 1 data type: number //看看发生了啥 client.smembers('ids', cb); //err: null data: [ '1' ] data type: object //看看集合有多少个元素 client.scard('ids', cb); //err: null data: 1 data type: number //再加几个元素进去 client.sadd('ids', 3, 5, 8, 9); // //判断元素是否在集合内 client.sismember('ids', 8, cb); // err: null data: 1 data type: number client.sismember('ids', 80, cb); //err: null data: 0 data type: number
//往散列上添加多组键值对
client.hmset('phone', 'price', 5888, 'name', 'iphonex', cb); //err: null data: OK data type: string
//查看多个键的值
client.hmget('phone', 'price', 'name', cb); //err: null data: [ '5888', 'iphonex' ] data type: object
//查看键值对的数量
client.hlen('phone', cb); //err: null data: 2 data type: number
//删掉其中一个键值对
client.hdel('phone', 'price', cb); //err: null data: 1 data type: number
//看看price是否还在?
client.hmget('phone', 'price', cb); //err: null data: [ null ] data type: object,原来只留下了null
//再加几个属性
client.hmset('phone', 'vendor', 'apple', 'madein', 'china', cb);
//取出所有的键值对
client.hgetall('phone', cb); //err: null data: { name: 'iphonex', vendor: 'apple', madein: 'china' } data type: object
//取出所有的键
client.hkeys('phone', cb); //err: null data: [ 'name', 'vendor', 'madein' ] data type: object
//取出所有的值
client.hvals('phone', cb); //err: null data: [ 'iphonex', 'apple', 'china' ] data type: object
//判断键是否存在
client.hexists('phone', 'name', cb); //err: null data: 1 data type: number
client.hexists('phone', 'price', cb); //err: null data: 0 data type: number
Empfohlene Lektüre:
Detaillierte Erläuterung der Schritte zur Implementierung des Vollbild-Bildlauf-Plug-Ins in ES6A Zusammenfassung der Verwendung des NodeJS-Protokollmoduls Winston
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Anwendungsfälle von Redis in NodeJS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!