node_koa后端——连接redis缓存数据

3,594 阅读2分钟

yma16-logo

⭐背景

大家好,我是yma16,本文分享 node_koa后端——连接redis缓存数据。

面向对象:前端初学者、前端转后端的同学

该系列往期文章

node_koa后端——初始化配置jwt和swagger的koa框架

redis

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。

⭐初始化安装配置 redis

redis客户端下载 redis.io/download/

下载一个redis manager,客户端可视化管理redis。

koa安装ioredis依赖

# npm install ioredis

ioredis

ioredis 是一个用于 Node.js/io.js 的 Redis 客户端

💖封装 redis 缓存读取数据的方法

新增utils/redis/index.js

const Redis = require('ioredis')

// 创建 Redis 客户端实例, 连接指定的 Redis 服务器
const redis = new Redis({
    port: 6379, // redis服务器默认端口号
    host: '127.0.0.1' // redis服务器的IP地址
})

// 配置 键值对
const setRedisConfig=(key,value)=>{
    redis.set(key, value);
}

// 获取键值对
const getRedisKey=async(key)=>{
   return new Promise((resolve,reject)=>{
       // ioredis supports the node.js callback style
       redis.get(key, (err, result) => {
           if (err) {
               reject(err);
           } else {
               resolve(result);
           }
       });
   })
}

module.exports={
    getRedisKey,
    setRedisConfig
}

配置账号密码的配置

new Redis({
  port: 6379, // Redis port
  host: "127.0.0.1", // Redis host
  username: "default", // needs Redis >= 6
  password: "my-top-secret",
  db: 0, // Defaults to 0
});

💖添加一个post api 往redis存数据

const Router = require('koa-router');
const router = new Router();
const {setRedisConfig } =require('../../utils/redis/index');
router.post('/redis/data', async(ctx) => {
    try {
        const bodyParams = ctx.request.body
        const { key, value } = bodyParams
        const resut = await setRedisConfig(key, value)
        ctx.body = { code: 200, msg: 'success!', data: resut };
    } catch (e) {
        ctx.body = { code: 0, data: e, msg: 'fail' };
    }
});

💖添加一个get api 往redis取数据

const Router = require('koa-router');
const router = new Router();
const {setRedisConfig } =require('../../utils/redis/index');
router.get('/redis/data', async(ctx) => {
    try {
        const queryParams = ctx.request.query;
        const { key } = queryParams;
        const value = await getRedisKey(key)
        ctx.body = { code: 200, msg: 'success!', data: value };
    } catch (e) {
        ctx.body = { code: 0, data: e, msg: 'fail' };
    }
});

⭐测试

💖打开redis

注意这里没有配置账号密码

redis-server

💖打开redis-manager

管理查看redis

redis-manager

💖运行koa 请求post redis接口

apifox模拟请求接口

api: http://localhost:3333/api/redis/data
method: post
data: {
    "key":"juejin_name",
    "value":"yma16"
}

set redis

💖使用manage查看redis的存储

存储成功!

manage-redis

💖运行koa 请求get redis接口

apifox模拟请求接口

api: http://localhost:3333/api/redis/data?key=juejin_name
method: get

读取参数成功!

get-redis

⭐结束

本文分享到这结束,如有错误或者不足之处欢迎指出! earth

👍 点赞,是我创作的动力!

⭐️ 收藏,是我努力的方向!

✏️ 评论,是我进步的财富!

💖 最后,感谢你的阅读!