在项目开发中,为了做分布式,于是开始使用redis,这里对redis的学习做一个总结。

背景

之前楼主在项目开发中,在node层使用session来记录用户的登录态,本地跑着完全没有问题,但是当项目进行分布式部署的时候,发现现实却不是想象的那么美好。

  • 场景1:分布式情况下本地session会导致登录态错乱
  • 场景2:多浏览器信息不同步

于是,在node层,我们接入了redis。

what

REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。值的类型有以下几种:

  • 字符串(String)
  • 哈希(Map)
  • 列表(list)
  • 集合(sets)
  • 有序集合(sorted sets)

安装

接着,我们来看下在node中怎么使用redis。

第一步,当然是先安装啦~

在本地开发的时候,我们可以在我们的电脑安装redis服务,开启之后可以使用node进行连接。

我这里用的是windows的机器,先到 redis 下载一个安装包,然后按照提示直接安装即可。

进入redis目录,打开cmd,然后执行以下命令,redis服务就跑起来了~

redis-server.exe redis.windows.conf
复制代码

想试试服务有没有启动成功,可以使用redis的cli工具,我们可以直接操作redis~

tips:安装本地redis只是为了方便本地调试,一般情况下,项目中都会使用远端的redis,这样才能确保数据的统一性。

使用

安装完之后,接下来我们就要来看看怎么在node服务中使用redis。

session - redis

一般情况下,我们的项目都会做分布式,确保系统的可靠性。所以,像登录态这种信息就需要存到数据库中,一般会使用redis,也可以使用其他数据库~

这里使用的node框架是express,所以我们要先安装这几个依赖

npm install express
npm install express-session
npm install connect-redis
复制代码

然后,项目初始化链接session的时候,直接配置即可。

let express = require('express');
let session = require('express-session');
let RedisStore = require('connect-redis')(session);let app = express();// 本地session
app.use(session({secret: config.session.secret,cookie: { maxAge: 2 * 60 * 60 * 1000 }
}));// redis session
app.use(session({name: 'binnie.sid',store: new RedisStore({host: host,port: port,pass: pass,db: db,ttl: 7200}),secret: secret,resave: false,saveUninitialized: true
}));
复制代码

直连redis

大部分情况下,session即可解决分布式问题。当然也有解决不了的问题,比如用户切换浏览器的时候,session其实就会改变。

栗子:我的网站,一个用户同时只能观看一个视频,使用session的情况下,如果该用户换个浏览器,那么,我就识别不出来了。而使用redis,按照用户id来进行区分,那么我们就可以对用户进行限制!

let redis = require('redis');let client = redis.createClient({host: host,port: port,password: pass
});client.auth(config.redis.pass, function() {logger.info('redis auth ok');
});client.on('connect', function() {logger.info('redis connect ok');
});client.on('ready', function() {logger.info('redis ready ok');
});// 读取redis
client.get(key, function(err, reply) {})// 设置redis
client.set(key, value, redis.print);
复制代码

写在最后

做前端的时候可能会比较少接触redis,接触node服务到后续分布式其实就会用到的,对前端同学来说学会使用redis并不难~

今天又是美好的一天~

node 之 redis 使用相关推荐

  1. [Redis]Node操作Redis

    Node操作Redis请使用node_redis node安装方法 npm install redis GitHub网址 https://github.com/NodeRedis/node_redis ...

  2. Node.js: redis 和 ioredis 的基本使用

    Node.js : redis 和 ioredis 的基本使用 前言 正文 redie的安装和使用 ioredie的使用 封装所需要用到的ioredis方法 前言 此篇内容记录本人编程过程中所遇到的一 ...

  3. win10下docker部署nginx+node+mongodb+redis学习

    环境介绍 docker的好处有很多,这里就不多说了,win10上安装docker要求是专业版的win10,而我们一般买的是家庭版的,家庭版可以通过激活码升级成专业版,至于激活码,读者们可以去某宝买,不 ...

  4. node.js -redis -bull

    初始化queue // bullTest.js 'use strict'; const Queue = require('bull'); const queue = new Queue('nike', ...

  5. 若依框架入门搭建(前后端分离版本)-重点IDEA 、Navicat、sql、node、redis、windows11

    一直想搭一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的.于是利用空闲休息时间开始自己搭了一套后台系统(基于windows11系统). 官方网站文档用Eclipse搭建,官方只用简单的几 ...

  6. Node js redis

    const redis = require('redis');//redis const client = redis.createClient(8888, '172.16.4.2'); //redi ...

  7. node.js redis 同步取值 bluebird async await promisifyAll

    1. 安装redis库 npm install --save redis 2. ../../.../config.js module.exports = {// ...redis: {host: &q ...

  8. node安装和使用redis

    2019独角兽企业重金招聘Python工程师标准>>> 开发环境:window 1.安装node.js,且配置环境变量 下载node.js安装包:http://nodejs.cn/d ...

  9. redis集群中slot迁移的BUG:clusterManagerMoveSlot failed: ERR I don‘t know about node xx,解决办法如下文

    这个BUG很奇怪,先放BUG出现的图片吧 报错:clusterManagerMoveSlot failed: ERR I don't know about node xxx redis找不到他自己创建 ...

最新文章

  1. [BZOJ2527]Meteors
  2. 【Java代码实现】递归两大经典问题-----“汉诺塔问题” 与 “青蛙跳台阶问题” 讲解
  3. 那些开源程序中让人叹为观止的代码 - 3 保持元素纵横比
  4. Eclipse中Maven的安装
  5. 20应用统计考研复试要点(part38)--概率论与数理统计
  6. 【leetcode】287. 寻找重复数
  7. 如何踩中下一个技术节拍
  8. vs2019键盘钩子_低级键盘钩子回调函数
  9. za压缩图片的几种方法
  10. 清明:直面骄阳、向死而生
  11. 【FPGA】安路FPGA下载器驱动安装教程
  12. java 多定时任务_多机部署之定时任务完整方案
  13. 03 学生免费注册Pycharm专业版
  14. 51单片机的电子密码锁的设计与仿真
  15. 简单(静态)工厂模式
  16. html假蓝屏死机源码,100秒内蓝屏死机的脚本源代码
  17. VMware15安装
  18. 【Google论文】The Google File System 译文
  19. 【Manual】Memory Cache Control
  20. Android 版本主要变更与适配

热门文章

  1. curl模拟多线程抓取网页(优化)
  2. android studio 的自动更新问题
  3. lifekeeper for linxu安装步骤
  4. 有多少可爱IT精英,他们的爱情屡屡“挨踢”
  5. 成都机场迎春运客流高峰 日均起降航班超1000架次
  6. JavaWeb项目异常管理之log4j的使用教程
  7. Microsoft.Data.ConnectionUI.DataConnectionDialog
  8. 使用shell统计字符串出现的次数,并从大到小进行排序显示
  9. 《PHP对象、模式与实践》之高级特性
  10. 合格SEOER应该具备的能力