一个前端,爱跑步、爱吉他、爱做饭、爱生活、爱编程、爱南芳姑娘,爱我所爱。世间最温暖又无价的是阳光、空气与爱,愿它们能带你去更远的地方。

  • 文章
  • 心情
  • 照片墙
  • 工具
  • 开发技术分享

    koa-redis进行数据的读写

    技术 195 2021-05-13 10:14

    简单介绍: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.安装相关依赖。

    npm i koa-generic-session  redis koa-redis koa 
    

    2.配置一些redis的参数

    let redisStore = require("koa-redis");
    let app = new koa();
    let options = {
      host: "127.0.0.1",
      port: 6379,
      db: 0,
      // pass: "UFbCL%162WPB8Eyq",
    };
    
    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.进行连接和读写

    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");
    });
    

    全部的代码

    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: "UFbCL%162WPB8Eyq",
    };
    
    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