环境准备:

1、redis服务已成功安装并可访问

2、nodejs工程安装redis.js包,执行npm install redis --save安装redis

npm install redis --save

不熟悉的小伙伴可以翻看下redis.js的官方文档API,看一下createClient的配置参数,set, get,rpush,del等api的说明;

下面是代码封装与实现:

const redis = require('redis');const host = "127.0.0.1"; // redis服务地址
const port = '6379' // redis服务端口class Redis {constructor() {this.redisClient = redis.createClient({url: `redis://${host}:${port}`,legacyMode: true});// 配置redis的监听事件this.redisClient.on('ready', function() {console.log('Redis Client: ready')})// 连接到redis-server回调事件this.redisClient.on('connect', function () {console.log(new Date(), 'redis is now connected!');});this.redisClient.on('reconnecting', function () {console.log(new Date(), 'redis reconnecting', arguments);});this.redisClient.on('end', function () {console.log('Redis Closed!');});this.redisClient.on('warning', function () {console.log('Redis client: warning', arguments);});this.redisClient.on('error', err => {console.log('Redis Error ' + err);});// 判断redis是否连接if (this.redisClient.isOpen) {console.log('rredis is now connected!')} else {this.redisClient.connect().catch(error => console.log(error));}}async contect() {await this.redisClient.connect().catch(error => console.log(error));}quit() {this.redisClient.quit();}async exists(key) {return new Promise((resolve, reject) => {this.redisClient.exists(key, (err, result) => {if (err) {console.log(err);reject(false);}resolve(result);})})}async set(key, value, exprires) {if (typeof value === 'object') {value = JSON.stringify(value)}return new Promise((resolve, reject)  => {this.redisClient.set(key, value, (err, result) => {if (err) {reject(false);}if (!isNaN(exprires)) {this.redisClient.expire(key, exprires);}resolve(result);})})}async get(key) {return new Promise((resolve, reject) => {this.redisClient.get(key, (err, result) => {if (err) {reject(false);}resolve(result);})})}async remove(key) {return new Promise((resolve, reject) => {this.redisClient.del(key, (err, result) => {if (err) {reject(false);}resolve(result);})});}// push 将给定值推入列表的右端 返回值 当前列表长度async rPush(key, list, exprires) {return new Promise((resolve, reject) => {this.redisClient.rPush(key, list, (err, length) => {if (err) {reject(false);}if (!isNaN(exprires)) {this.redisClient.exports(key, exprires);}resolve(length);})})}// 查询list的值async lrange(key, startIndex = 0, stopIndex = -1) {return new Promise((resolve, reject) => {this.redisClient.lRange(key, startIndex, stopIndex, (err, result) => {if (err) {reject(false);}resolve(result)})})}// 清除list中n个值为value的项async lrem(key, n = 1, value) {return new Promise((resolve, reject) => {this.redisClient.lrem(key, n, value, (err, result) => {if (err) {return false}resolve(result);})});}}module.exports = new Redis();

上面已经对redis的能力进行了简单的封装,代码就不过多的进行解释了,一般都看得懂;

(err, result) => {
                if (err) {
                    reject(false); 这里reject(false),reject(err),都可以,根据需要自己决定,建议reject(err),外面调用的时候惊醒一个异常捕捉,这样做更好一些,
                }
                resolve(result)
            }

下面就是如何调用:这段是向微信服务器获取accesstoken,部分业务代码已经省略,只展示redis的操作

const redisClient = require('../../core/redisClient');
class wxService {static async getAccessToken() {// 判断是否存在const haKey = await redisClient.exists('access_token');let access_token = '';if (haKey) {access_token = await redisClient.get('access_token');}// 不存在去获取access_token,并存入到redis中if (!haKey || !access_token) {access_token = 'XXXXXXXXXXXXXXXX';await redisClient.set('access_token', access_token, 60*60*2)           }}
}

nodejs使用redis.js并进行封装,实现数据存取相关推荐

  1. [Intel Edison开发板] 04、Edison开发基于nodejs和redis的服务器搭建

    一.前言 intel-iot-examples-datastore 是Intel提供用于所有Edison开发板联网存储DEMO所需要的服务器工程.该工程是基于nodejs和redis写成的一个简单的工 ...

  2. nodejs 实现 redis 的消息发布及订阅

    nodejs 实现 redis 的消息发布及订阅 业务需求 实现方法(koa) 流程 业务需求 大家好,我终于踩坑了哈哈哈哈--- 如果服务器是单线程的话 消息推送完全可以用websocket来实现, ...

  3. nodejs使用redis库

    nodejs使用redis库 安装redis redis4.0语法 redis3.0语法 安装redis 注意:默认安装都是最新版本(截至2022.4.12)即 4.0.6 npm install r ...

  4. NodeJS 使用redis实现定时执行方法

    NodeJS 使用redis实现定时执行任务 文章目录 NodeJS 使用redis实现定时执行任务 场景 使用Redis定时器解决 Redis定时器 Redis发布订阅 操作 nodejs代码 主意 ...

  5. Redis工具类的封装

    Redis工具类的封装 <dependency><groupId>redis.clients</groupId><artifactId>jedis< ...

  6. nodejs使用redis数据库缓存数据

    原文: i.jakeyu.top/2017/01/10/- 作者: Jake 运行redis Redis服务器默认使用6379端口 redis-server 自定义端口 redis-server -- ...

  7. JS类的封装及实现代码

    js并不是一种面向对向的语言, 没有提供对类的支持, 因此我们不能像在传统的语言里那样 用class来定义类, 但我们可以利用js的闭包封装机制来实现js类, 我们来封装一个简的Shape类. 1. ...

  8. NodeJS(express)连接、封装操作MySQL

    最近要开发一个全栈项目.第一次上车,小本本记录一下,以免忘记. 1.目录结构 先来看一下项目目录: web文件夹:是放一些前端的代码: node_serve:服务端的一些文件: – server.js ...

  9. JS面向对象编程之封装

    我们所熟知的面向对象语言如 C++.Java 都有类的的概念,类是实例的类型模板,比如Student表示学生这种类型,而不表示任何具体的某个学生,而实例就是根据这个类型创建的一个具体的对象,比如zha ...

最新文章

  1. WatchStor观察:思科携EMC等合作伙伴 圈地数据中心市场
  2. 【c语言】蓝桥杯算法提高 3-2字符串输入输出函数
  3. Android4.0-4.4 加入支持状态栏显示耳机图标方法(支持带不带MIC的两种耳机自己主动识别)...
  4. 将一组数进行排序后,也输出他与之对应的序号
  5. LeetCode-46. Permutations
  6. cisco帧中继实验
  7. 嵌入式工具——smartmontools
  8. 存用部首查字典如何查_存的部首,存的偏旁部首,存的拼音,存的笔画数,存的组词,存的意思...
  9. 笔记本计算机信号不强,增强笔记本WiFi无线信号的方法
  10. H264码流处理详解
  11. 四、HTTP协议Header介绍
  12. kafka系列4:消息幂等性
  13. 「需求工程」需求工程-介绍(第1部分)
  14. 4种Java引用浅解
  15. Brave浏览器 1.0正式面世, 为用户提供无与伦比的隐私保护和奖励
  16. 关于kernel2.6中USB host controller driver 的问题
  17. Vue:获取当前定位城市名
  18. 高中信息技术真题(2022下)
  19. 【QtScrcpy】开源的投屏控制软件 - 安利
  20. 基于JAVA的远程屏幕监控系统

热门文章

  1. 中兴路由器查看时间_1.1.1_老化时间设置说明中兴路由器
  2. Can't create database 'xxx' (errno: 28)
  3. 计算机关闭了休眠还是休眠了,电脑关机还是休眠?Win10关闭方式查看命令
  4. 坏人好当,好人难做!
  5. 【020】基于51单片机智能路灯系统Proteus仿真与实物设计
  6. SIMATIC WINCC与PLC进行以太网通信的具体组态方法和步骤
  7. 300行代码带你实现一个Linux文件系统
  8. ORACLE 字符串替换函数 REPLACE()
  9. 蓝牙ibeacon技术实现低成本、高精度室内定位
  10. FFmpeg环境安装及使用命令实现音视频转码