Home  >  Article  >  Web Front-end  >  Detailed explanation of application cases of redis in nodejs

Detailed explanation of application cases of redis in nodejs

php中世界最好的语言
php中世界最好的语言Original
2018-05-14 14:14:131826browse

This time I will bring you a detailed explanation of the application cases of redis in nodejs. What are the precautions for the application of redis 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:

Detailed explanation of the steps to implement full-screen scrolling plug-in in ES6

Summary of how to use nodejs log module winston

The above is the detailed content of Detailed explanation of application cases of redis in nodejs. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn