node 之 redis 使用
在项目开发中,为了做分布式,于是开始使用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 使用相关推荐
- [Redis]Node操作Redis
Node操作Redis请使用node_redis node安装方法 npm install redis GitHub网址 https://github.com/NodeRedis/node_redis ...
- Node.js: redis 和 ioredis 的基本使用
Node.js : redis 和 ioredis 的基本使用 前言 正文 redie的安装和使用 ioredie的使用 封装所需要用到的ioredis方法 前言 此篇内容记录本人编程过程中所遇到的一 ...
- win10下docker部署nginx+node+mongodb+redis学习
环境介绍 docker的好处有很多,这里就不多说了,win10上安装docker要求是专业版的win10,而我们一般买的是家庭版的,家庭版可以通过激活码升级成专业版,至于激活码,读者们可以去某宝买,不 ...
- node.js -redis -bull
初始化queue // bullTest.js 'use strict'; const Queue = require('bull'); const queue = new Queue('nike', ...
- 若依框架入门搭建(前后端分离版本)-重点IDEA 、Navicat、sql、node、redis、windows11
一直想搭一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的.于是利用空闲休息时间开始自己搭了一套后台系统(基于windows11系统). 官方网站文档用Eclipse搭建,官方只用简单的几 ...
- Node js redis
const redis = require('redis');//redis const client = redis.createClient(8888, '172.16.4.2'); //redi ...
- node.js redis 同步取值 bluebird async await promisifyAll
1. 安装redis库 npm install --save redis 2. ../../.../config.js module.exports = {// ...redis: {host: &q ...
- node安装和使用redis
2019独角兽企业重金招聘Python工程师标准>>> 开发环境:window 1.安装node.js,且配置环境变量 下载node.js安装包:http://nodejs.cn/d ...
- 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找不到他自己创建 ...
最新文章
- [BZOJ2527]Meteors
- 【Java代码实现】递归两大经典问题-----“汉诺塔问题” 与 “青蛙跳台阶问题” 讲解
- 那些开源程序中让人叹为观止的代码 - 3 保持元素纵横比
- Eclipse中Maven的安装
- 20应用统计考研复试要点(part38)--概率论与数理统计
- 【leetcode】287. 寻找重复数
- 如何踩中下一个技术节拍
- vs2019键盘钩子_低级键盘钩子回调函数
- za压缩图片的几种方法
- 清明:直面骄阳、向死而生
- 【FPGA】安路FPGA下载器驱动安装教程
- java 多定时任务_多机部署之定时任务完整方案
- 03 学生免费注册Pycharm专业版
- 51单片机的电子密码锁的设计与仿真
- 简单(静态)工厂模式
- html假蓝屏死机源码,100秒内蓝屏死机的脚本源代码
- VMware15安装
- 【Google论文】The Google File System 译文
- 【Manual】Memory Cache Control
- Android 版本主要变更与适配
热门文章
- curl模拟多线程抓取网页(优化)
- android studio 的自动更新问题
- lifekeeper for linxu安装步骤
- 有多少可爱IT精英,他们的爱情屡屡“挨踢”
- 成都机场迎春运客流高峰 日均起降航班超1000架次
- JavaWeb项目异常管理之log4j的使用教程
- Microsoft.Data.ConnectionUI.DataConnectionDialog
- 使用shell统计字符串出现的次数,并从大到小进行排序显示
- 《PHP对象、模式与实践》之高级特性
- 合格SEOER应该具备的能力