web前端

node操作redis

2022-05-26  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读