node操作redis

作者: 姜治宇 | 来源:发表于2022-05-26 14:41 被阅读0次

    redis是干啥的

    redis其实就是一种nosql数据库,用来存储数据的。
    nosql并没有表结构这类东西,数据都是以键值对的方式存储。
    redis最大特点就是速度快,因为数据都是保存在内存中。
    因此,我们可以将用户频繁查询的数据存入redis中,以提高查询性能。

    安装

    推荐大家用docker进行安装。先拉取镜像,然后启动redis,默认端口号是6379。

    docker pull redis
    docker run -d -p 6379:6379 --name myRedis redis
    

    我们还可以安装一个redis图形化界面,这样可以比较形象的看到数据存储结构。
    下载链接:https://pan.baidu.com/s/1PTf0VALc3Qp8Oa78cvBzcA
    提取码:epsk

    node连接redis

    首先需要安装redis插件,然后再装个util插件,可以很方便的将redis的方法封装成promise调用。

    npm install redis -S
    npm install util -S
    

    以express为例。
    index.js:

    var express = require('express');
    var router = express.Router();
    var redis = require('redis');
    const { promisify } = require('util');
    const client = redis.createClient({
      host: 'localhost',
      port: 6379
    });
    
    client.on('error', (err) => {
      console.log('redis error>>>', err);
    });
    /* GET home page. */
    router.get('/', async (req, res, next) => {
      let redisObj = promiseRedis(client);
      let user = {
        status: 0,
        info: {
          username: 'jack',
          password: '123456',
          age: 16
        }
      };
      await redisObj.set('userInfo', JSON.stringify(user));
      let userInfo = await redisObj.get('userInfo');
      res.send(userInfo);
      // res.render('index', { title: 'Express' });
    });
    function promiseRedis(client) {
    
      return {
        exists: promisify(client.exists).bind(client),
        keys: promisify(client.keys).bind(client),
        set: promisify(client.set).bind(client),
        get: promisify(client.get).bind(client),
        del: promisify(client.del).bind(client),
        incr: promisify(client.incr).bind(client),
        decr: promisify(client.decr).bind(client),
        lpush: promisify(client.lpush).bind(client),
        hexists: promisify(client.hexists).bind(client),
        hgetall: promisify(client.hgetall).bind(client),
        hset: promisify(client.hset).bind(client),
        hmset: promisify(client.hmset).bind(client),
        hget: promisify(client.hget).bind(client),
        hincrby: promisify(client.hincrby).bind(client),
        hdel: promisify(client.hdel).bind(client),
        hvals: promisify(client.hvals).bind(client),
        hscan: promisify(client.hscan).bind(client),
        sadd: promisify(client.sadd).bind(client),
        smembers: promisify(client.smembers).bind(client),
        scard: promisify(client.scard).bind(client),
        srem: promisify(client.srem).bind(client)
    
      }
    
    }
    module.exports = router;
    
    

    运行结果:


    1.png

    看一下redis的图形化界面:


    3.png

    相关文章

      网友评论

        本文标题:node操作redis

        本文链接:https://www.haomeiwen.com/subject/ibiuprtx.html