nodejs + Koa2 之Redis安装使用

2024-04-11 10:48
文章标签 安装 使用 redis nodejs koa2

本文主要是介绍nodejs + Koa2 之Redis安装使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

nodejs + Koa2 之Redis使用

  • 本机Redis的安装
    • 下载
    • 安装
  • 在项目中使用Redis
    • 安装依赖
    • 创建Redis.js
    • 创建user用户存储到redis,并在缓存获取数据
    • 验证存储是否成功

本机Redis的安装

【mac系统为栗子】

下载

打开官网:https://redis.io/
Download—Stable—Download6.0.4,下载最新稳定版,这里是6.0.4

安装

1.下载完成后,打开命令行工具,执行解压命令(如可以双击解压就更好)

tar zxvf redis-6.0.4.tar.gz

2.将解压后文件夹放到/usr/local

mv redis-6.0.4 /usr/local

3.切换到相应目录

cd /usr/local/redis-6.0.4

4.编译测试

sudo make test

执行后成功如图所示
在这里插入图片描述
5.编译安装

sudo make install

在这里插入图片描述
6.启动Redis

redis-server

在这里插入图片描述

在项目中使用Redis

安装依赖

npm install redis --save

安装oredis包

npm install ioredis --save

创建Redis.js

首先,新建配置文件 Redis.js (文件名可变,根据你项目的需求),目录如下
在这里插入图片描述
文件代码


const redisStore = require('koa-redis')
const Redisdb = require('ioredis')module.exports = class Redis {constructor () {this.config = {port: 6379,host: '127.0.0.1',db: 0}this.client = new Redisdb(this.config)this.options = { client: this.client, db: 0 }this.store = redisStore(this.options)}async storeClient () {return this.store.client}async set (key, value, expiryMode, time) {return this.client.set(key, value, expiryMode, time)}async get (key) {return this.client.get(key)}async hmset (key, data) {return this.client.hmset(key, data)}async expire (key, time) {return this.client.expire(key, time)}async hmget (key) {return this.client.hgetall(key)}async getAllKey () {return this.client.keys('*')}
}

创建user用户存储到redis,并在缓存获取数据

1.准备工作,这里用到了依赖注入,inversify,将Redis注入到使用缓存的文件里,如下代码所示
UserService.js

将Redis注入进来,方便使用其方法

module.exports = class UserService {constructor (User, Describe, Redis) {this._User = Userthis._Describe = Describethis._Redis = Redis// redis注入UserService中}

创建用户,存入缓存中,调用Redis.js中hmset(key,data)方法

 async createUser (user) {const key = `${user.userName}_user` //设置key,因为会有多个用户创建const a = await this._Redis.hmset(key, user)return user}

获取用户信息,直接从缓存中获取,调用Redis.js中hmget(key)方法

  async getUsers () {  const keys = await this._Redis.getAllKey()//拿取内存中所有keyconst data = keys.filter(data => data.endsWith('_user'))//筛选出以_user结尾的文件let users = []//定义数组for (let usr of data) {const res = await this._Redis.hmget(usr)users.push(res)//遍历并return}return users  }

依赖注入文件,增加Redis
buildInversifyContainer.js
在这里插入图片描述
注入

  inversify.decorate(inversify.inject(types.Redis), context.UserService, 2)

context.js

function redisControllers () {const dirPath = path.join(__filename, '../../config/redis/models')const data = fs.readdirSync(dirPath).map(file => require(path.join(dirPath, file))).reduce((object, currentValue) => {object[currentValue.name] = currentValuereturn object}, {})return data
}
function buildContext () {const services = loadServices()const controllers = loadControllers()const redis = redisControllers()const context = {...models,...services,...controllers,...redis}delete context.Sequelizereturn context
}

调用创建的接口 ,成功后调用获取接口,拿到了证明成功了

验证存储是否成功

redis-cli -h 127.0.0.1 -p 6379
hmget xwr2r_user email//hmget key file

这篇关于nodejs + Koa2 之Redis安装使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/893862

相关文章

Python使用Spire.PDF实现为PDF添加水印

《Python使用Spire.PDF实现为PDF添加水印》在现代数字化办公环境中,PDF已成为一种广泛使用的文件格式,尤其是在需要保持文档格式时,下面我们就来看看如何使用Python为PDF文件添加水... 目录一、准备工作二、实现步骤1. 导入必要的库2. 创建 PdfDocument 对象3. 设置水印

Java中的ConcurrentBitSet使用小结

《Java中的ConcurrentBitSet使用小结》本文主要介绍了Java中的ConcurrentBitSet使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、核心澄清:Java标准库无内置ConcurrentBitSet二、推荐方案:Eclipse

Go语言结构体标签(Tag)的使用小结

《Go语言结构体标签(Tag)的使用小结》结构体标签Tag是Go语言中附加在结构体字段后的元数据字符串,用于提供额外的属性信息,这些信息可以通过反射在运行时读取和解析,下面就来详细的介绍一下Tag的使... 目录什么是结构体标签?基本语法常见的标签用途1.jsON 序列化/反序列化(最常用)2.数据库操作(

Java中ScopeValue的使用小结

《Java中ScopeValue的使用小结》Java21引入的ScopedValue是一种作用域内共享不可变数据的预览API,本文就来详细介绍一下Java中ScopeValue的使用小结,感兴趣的可以... 目录一、Java ScopedValue(作用域值)详解1. 定义与背景2. 核心特性3. 使用方法

spring中Interceptor的使用小结

《spring中Interceptor的使用小结》SpringInterceptor是SpringMVC提供的一种机制,用于在请求处理的不同阶段插入自定义逻辑,通过实现HandlerIntercept... 目录一、Interceptor 的核心概念二、Interceptor 的创建与配置三、拦截器的执行顺

springboot+redis实现订单过期(超时取消)功能的方法详解

《springboot+redis实现订单过期(超时取消)功能的方法详解》在SpringBoot中使用Redis实现订单过期(超时取消)功能,有多种成熟方案,本文为大家整理了几个详细方法,文中的示例代... 目录一、Redis键过期回调方案(推荐)1. 配置Redis监听器2. 监听键过期事件3. Redi

C#中checked关键字的使用小结

《C#中checked关键字的使用小结》本文主要介绍了C#中checked关键字的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录✅ 为什么需要checked? 问题:整数溢出是“静默China编程”的(默认)checked的三种用

C#中预处理器指令的使用小结

《C#中预处理器指令的使用小结》本文主要介绍了C#中预处理器指令的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 第 1 名:#if/#else/#elif/#endif✅用途:条件编译(绝对最常用!) 典型场景: 示例

jdk1.8的Jenkins安装配置实践

《jdk1.8的Jenkins安装配置实践》Jenkins是一款流行的开源持续集成工具,支持自动构建、测试和部署,通过Jenkins,开发团队可以实现代码提交后自动进行构建、测试,并将构建结果分发到测... 目录Jenkins介绍Jenkins环境搭建Jenkins安装配置Jenkins插件安装Git安装配

python版本切换工具pyenv的安装及用法

《python版本切换工具pyenv的安装及用法》Pyenv是管理Python版本的最佳工具之一,特别适合开发者和需要切换多个Python版本的用户,:本文主要介绍python版本切换工具pyen... 目录Pyenv 是什么?安装 Pyenv(MACOS)使用 Homebrew:配置 shell(zsh