这是我参与更文挑战的第17天,活动详情查看:更文挑战
为何Session适用于redis
- session 访问频繁, 对性能要求极高
- session 可不考虑断电丢失数据的问题
- session 数据量不会太大( 相比于 MySQL 中存储的数据 )
Redis安装
可以看这个教程: www.runoob.com/redis/redis…
安装完成后在两个终端分别输入下面两条命令来启动 Redis, 记得在环境变量中加入Redis的安装路径~
redis-server
复制代码
redis-cli
复制代码
简单使用
在 redis-cli
的命令窗口:
set name tmier // 设置键值对
get myname // 取值
keys * // 取出所有键名
del myname // 删除键值对
复制代码
NodeJS 连接 Redis
1. 初始化文件夹
npm init -y
复制代码
完成后新建index.js
2.安装redis依赖包
npm i redis
复制代码
index.js
const redis = require('redis')
// 创建客户端
const redisClient = redis.createClient(6379, '127.0.0.1')
redisClient.on('error', err => {
console.error(err);
})
// 测试
redisClient.set('myname','Tmier', redis.print)
redisClient.get('myname', (err,val) => {
if(err) {
console.error(err);
}
console.log('val', val);
// 退出
redisClient.quit()
})
复制代码
output:
Reply: OK
val Tmier
复制代码
3. 封装工具函数
src/conf/db.js
const env = process.env.NODE_ENV // 获取环境参数
// 配置
let MYSQL_CONF
let REDIS_CONF
if (env == 'dev') {
// mysql
MYSQL_CONF = {
host: 'localhost',
user: 'root',
password: 'wyf666...',
port: '3306',
database: 'myblog'
}
// redis
REDIS_CONF = {
port: 6379,
host: '127.0.0.1'
}
}
if (env == 'production') {
MYSQL_CONF = {
host: 'localhost',
user: 'root',
password: 'wyf666...',
port: '3306',
database: 'myblog'
},
// redis
REDIS_CONF = {
port: 6379,
host: '127.0.0.1'
}
}
module.exports = {
MYSQL_CONF,
REDIS_CONF
}
复制代码
db/redis.js
const redis = require('redis')
const { REDIS_CONF } = require('../conf/db')
// 创建客户端
const redisClient = redis.createClient(REDIS_CONF.port, REDIS_CONF.host)
redisClient.on('error', err => {
console.error(err)
})
function set(key, val) {
if (typeof val == 'object') {
val = JSON.stringify(val)
}
redisClient.set(key, val, redis.print)
}
function get(key) {
return new Promise((resolve, reject) => {
redisClient.get(key, (err, val) => {
if (err) {
reject(err)
return
}
if(val == null) {
resolve(null)
return
}
try {
resolve(JSON.parse(val))
} catch (error) {
resolve(val)
}
})
})
}
module.exports = {
set,
get
}
复制代码
封装完成, 暴露了
get
与set
方法,然后把session
中的值存入就好了~
有感
一开始总是觉得nodejs链接数据库会很麻烦, 连接redis会很难搞, 学习MySQL和Redis会花费很多时间精力,但事实证明, 我确实把他们想的太难了, 不是说没有往深里学习的原因, 我现在学到的这个层次已经满足我的需求了, 我只是想能够自己写下接口, mockmock数据, 最好的话能够自己做一个博客,现在所学的已经满足了,当时就是想达到这么简单的需求都感觉会很难, ,一直推迟推迟…, 真的是有些事情我真的是把它们想的过于难了
一旦真正进入状态开始搞,简直是势如破竹! 哈哈哈后面的话会再学习KOA和Express, 有点期待呐~
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END