工廠找訂單哪個(gè)平臺(tái)最好舉例說(shuō)明seo
集成Redis
本節(jié)我們介紹在 express.js 中集成 redis.
Redis是一個(gè)高性能的key-value內(nèi)存數(shù)據(jù)庫(kù),支持事務(wù)、隊(duì)列、持久化等特性,常用于高并發(fā)性能場(chǎng)景。
準(zhǔn)備工作
- 創(chuàng)建一個(gè) express.js 項(xiàng)目(本文基于evp-express-cli)
- 在開(kāi)發(fā)環(huán)境下安裝redis
- 安裝redis.js:
npm i redis
創(chuàng)建代理
正常的項(xiàng)目都是分層的,為了避免循環(huán)依賴,本文采用代理類構(gòu)造單例的方式來(lái)創(chuàng)建redis連接。
redisProxy.js:
在構(gòu)造器內(nèi)創(chuàng)建redis連接,并監(jiān)聽(tīng)個(gè)別事件,最后把連接賦給client成員變量。再定義一個(gè)靜態(tài)的獲取實(shí)例方法,調(diào)用時(shí)實(shí)例若為空,就構(gòu)建實(shí)例:
const Redis = require('redis');
const logger = require('./logger');class RedisProxy {/*** @type {RedisProxy}*/_instance = null;constructor() {const client = Redis.createClient({url: `redis://127.0.0.1:6379`,});client.on('connect', () => {logger.info('Redis connected!');});client.on('error', err => {logger.error('Redis Client Error!', err);process.exit(1);});client.connect();this.client = client}static instance() {if(!this._instance) {this._instance = new RedisProxy();}return this._instance;}
}
然后把redis導(dǎo)出來(lái):
async function init() {return RedisProxy.instance();
}module.exports = {init,instance: RedisProxy.instance(),
};
然后在任意其它地方調(diào)用 redisProxy.instance 即可獲取單例,在從單例中獲取client即可操作redis.
const RedisProxy = require('../utils/redisProxy');
const redisProxy = RedisProxy.instance;
const redis = redisProxy.client;redis.set("name", "evpantchouli"); //設(shè)置鍵
console.log(await redis.get("name"); //取鍵
你可以自己手動(dòng)配置一遍,也可以使用evp-express-cli作為手腳架創(chuàng)建項(xiàng)目并選擇redis模板。
關(guān)于redis.js的詳細(xì)用法請(qǐng)見(jiàn)官方文檔: http://npmjs.com/package/redis