koa-redis进行数据的读写

2022-08-11 19:26:08 浏览数 (2)

简单介绍:Redis是一个常用的Nosql数据库,一般用来代替Memcached做缓存服务,同时它也支持数据的持久化,

有着比较广泛的应用场景。在Java中使用redis我们已经比较熟悉了,

那么在node.js和koa.js框架中使用Redis的正确姿势是怎样的呢? 

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 

Redis 与其他 key - value 缓存产品有以下三个特点: 

* Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。 

* Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 

* Redis支持数据的备份,即master-slave模式的数据备份。

Redis常用命令可以参考http://www.runoob.com/redis/redis-keys.html

Node.js已经有很多redis相关的库,我在npm.org上搜了下大概有十几个吧,其中经常使用的redis,co-redis。

由于我用koa做web框架,因此就直接用了koa-redis。

这篇文章涉及koa.js,yield生成器和Promise相关的知识,需要先对这些概念有一定的认识。

以下是一些koa-redis的操作

此案例以连接远程的redis为例子,不在本地下载redis和启动服务。

1.安装相关依赖。

代码语言:javascript复制
npm i koa-generic-session  redis koa-redis koa 

2.配置一些redis的参数

代码语言:javascript复制
let redisStore = require("koa-redis");
let app = new koa();
let options = {
  host: "127.0.0.1",
  port: 6379,
  db: 0,
  // pass: "UFbCL2WPB8Eyq",
};

let store = redisStore(options);

redis连接的参数大全:

Options

* {Object} client   redis client

* {String} host     redis connect host (without options.client)

* {Number} port     redis connect port (without options.client)

* {String} socket   redis connect socket (without options.client)

* {String} db       redis db

* {String} pass     redis password

3.进行连接和读写

代码语言:javascript复制
app.use(
  session({
    store: store,
  })
);
app.use(async function (ctx, next) {
  switch (ctx.url) {
    case "/testKV":
      await store.client.set("test1", "123");
      ctx.body = await store.client.get("test1");
      break;
  }
});


app.listen(1234, () => {
  console.log("koa is run port:1234");
});

全部的代码

代码语言:javascript复制
let session = require("koa-generic-session");

let koa = require("koa");
let redis = require("redis");

let redisStore = require("koa-redis");
let app = new koa();

let options = {
  host: "127.0.0.1",
  port: 6379,
  db: 0,
  // pass: "UFbCL2WPB8Eyq",
};

let store = redisStore(options);

app.use(
  session({
    store: store,
  })
);

app.use(async function (ctx, next) {
  switch (ctx.url) {
    case "/testKV":
      await store.client.set("test1", "123");
      ctx.body = await store.client.get("test1");
      break;
  }
});

app.listen(1234, () => {
  console.log("koa is run port:1234");
});

参考文档:https://github.com/koajs/koa-redis

https://blog.csdn.net/offbye/article/details/52452322

https://blog.csdn.net/weixin_42554191/article/details/108967804

0 人点赞