This time I will bring you a practical project sharing of redis application in nodejs. What are the precautions for redis application in nodejs. The following is a practical case, let's take a look.
redis is an in-memory database with very good performance. It is deployed as a caching data library between the application and mysql data, which can greatly improve the performance of the application. Here is a brief introduction to the nodejs client The demo program for terminal operation of redis
redis can store a total of 5data types, which are string, list, set, three columns, and ordered set; Here, the additions, deletions, checks and modifications of these five data types will be processed one by one;
1. Installation of redis on mac:
https://redis. io/download, the current stable version I am using is 4.0.9. After decompressing, enter the redis-4.0.9 directory, execute make && sudo make install, and wait a few minutes to install it;
2 , redis startup:
Execute redis-server on the command line to start, the default port is 6379;
3. Install nodejs client:
Create the redis-node directory, After yarn init -y in this directory, execute the command: yarn add redis to install the redis client of nodejs. Reference document: https://github.com/NodeRedis/node_redis
4. In redis- In the node directory, execute node on the terminal, and you can execute the nodejs code responsively on the terminal for testing. Let’s start the demo program
First, create a client and connect to the redis server. After executing the following connection Before client code, please make sure that the redis server is running: the terminal provider can execute redis-server, the default port is 6379;
const redis = require('redis'); const client = redis.createClient(); //默认连接localhost:6379,具体配置参数可以参考文档https://github.com/NodeRedis/node_redis
If everything goes well, we have created a client to connect to the redis server. Subsequent operations are performed on the client object.
1. String type
Although it is a string type, the data that can be stored includes strings, integers and floating point numbers.
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
For the sake of simplicity, we define a callback function for outputting data:
const cb = (err, data) => { console.log('err: ', err, ' data: ', data, ' data type: ', typeof data); }
Let’s do a test for integers:
client.set('age', 20, cb); //err: null data: OK data type: string client.get('age', cb); //err: null data: 20 data type: string
It can be seen that although the setting is an integer, when it is output, it is still a string, so if you want to perform calculations, you need to do the conversion yourself in the callback function
2. List data type
//从右侧推入 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
Note here that the list operation can push one or more data from the right rpush, or push one or more data from the left lpush; in addition, when taking the value, you need to specify the start and end Position, if you want to get the entire position, you can write the end position as -1.
3. Collection data type
//往集合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
4. Hash data type
//往散列上添加多组键值对 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
I believe you have read the case in this article After mastering the method, please pay attention to other related articles on the php Chinese website for more exciting content!
Recommended reading:
How to use Vue SSR component loading
Vue.js internal listener use case analysis
The above is the detailed content of Practical project sharing of redis application in nodejs. For more information, please follow other related articles on the PHP Chinese website!