nodejs连接redis模块
redis的使用
- 安装
redis
模块
npm install redis --save
- 进行redis的一些配置
module.exports = {
redis:{
url:'localhost',
port:6379,
password:'123456'
}
}
上述配置中,url
是redis服务
的地址。port
是redis服务
的端口号,这里是默认端口,password
是redis
的密码。
- 编写redis工具函数
内容太多了,具体看代码及注释吧。
const redis = require('redis');
const config = require('./keys').redis
const client = redis.createClient(config.port, config.url); // 实例redis对象
//连接错误处理
client.on("error", err => {
console.log('redis connect err', err);
});
client.on('connect', () => {
console.log('redis connect success');
})
//验证redis
client.auth(config.password);
const redisHelper = {};
/**
* redisHelper setString function
* @param key
* @param value
* @param expire
*/
redisHelper.setString = (key, value, expire) => {
return new Promise((resolve, reject) => {
client.set(key, value, function (err, result) {
if (err) {
console.log(err);
reject(err);
}
if (!isNaN(expire) && expire > 0) {
client.expire(key, parseInt(expire));
}
resolve(result)
})
})
}
/**
* redisHelper getString function
* @param key
*/
redisHelper.getString = (key) => {
return new Promise((resolve, reject) => {
client.get(key, function (err, result) {
if (err) {
console.log(err);
reject(err)
}
resolve(result)
});
})
}
module.exports = redisHelper;
- 使用redis
-
redisHelper.setString(key, value, expire)
设置redis函数
redisHelper.setString('name','w候人兮猗',60 * 3).then((res)=>{
console.log('设置成功')
}).catch((err=>{
console.log('设置失败',err)
}))
-
redisHelper.getString(key)
获取redis函数
redisHelper.getString('name')
.then(result=>{
return res.json(result)
})
.catch(err=>{
console.log(err)
})
实现图形验证码
- 安装svg-captcha模块
npm install svg-captcha --save
- 使用svg-captcha模块
const svgCaptcha = require('svg-captcha')
const captcha = svgCaptcha.create({
// 翻转颜色
inverse: false,
// 字体大小
fontSize: 36,
// 噪声线条数
noise: 2,
// 宽度
width: 80,
// 高度
height: 30,
});
captcha就是生成的验证码实例
- 将验证码保存至redis
redisHelper.setString(email, captcha.text.toLowerCase(), effectTime).then(result => {
if (result) {
res.setHeader('Content-Type', 'image/svg+xml');
res.write(String(captcha.data));
res.end();
}
}).catch(err => {
console.log(err);
return res.json({
...MsgUtil.createWarnMsg('验证码获取失败')
})
})
- 查看结果
使用postman
调我们写好的接口
查看redis中
总结
简单的写了一下node
如果使用redis
以及如何生成图形验证码
。主要目的是为了在设计登陆注册的时候有图形验证码可以简单防止频繁的刷登陆注册接口。将验证码存于redis中主要是因为redis是一个key-value
类型的缓存。用完即删除,十分适用于这样的临时存值的需求