👉👉 下载地址
进入到下载地址,我下载的是这个
我这里解压到 D
盘了,所有的文件就只有这些。
使用 vscode
打开这个文件
找到 requirepass foobared
,复制到新的一行,将前面的 #
删除,并清除空格,不然会造成密码设置不成功。
然后将 foobared
改为自己需要的密码,然后保存,身份不够的以管理员身份打开。
在 redis
所在文件夹打开 cmd
,执行 redis-server.exe redis.windows.conf
,这时界面显示 redis
信息,说明服务正常开启。
为了方便下次启动,在 redis
所在文件夹下新建 startup.bat
文件,内容为 redis-server.exe redis.windows.conf
。
这个窗口不要关闭,继续打开一个 cmd
,执行 redis-cli.exe -h 127.0.0.1 -p 6379 -a xiaowei123
回车
其中 xiaowei123
就是之前设置的密码。
然后使用 set key value
设置缓存,使用 get key
读取缓存,出现以下界面就证明本地安装成功了。
这里为了跟着老师学习,指定安装版本,新版本语法不一样会导致错误。
npm i redis@3.0.2 -S
// src\config\envs\dev.js
module.exports = {
// redis 连接配置
redisConf: {
port: '6379',
host: '127.0.0.1',
password: 'xiaowei123'
},
}
// src\cache\index.js
const redisClient = require('../db/redis')
/**
* redis set
* @param {string} key key
* @param {string|Object} val val
* @param {number} timeout 过期时间,单位 s ,默认 1h
*/
function cacheSet(key, val, timeout = 60 * 60) {
let formatVal
if (typeof val === 'object') {
formatVal = JSON.stringify(val)
} else {
formatVal = val
}
redisClient.set(key, formatVal)
redisClient.expire(key, timeout)
}
/**
* redis get
* @param {string} key key
*/
function cacheGet(key) {
const promise = 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 (ex) {
resolve(val)
}
})
})
return promise
}
module.exports = {
cacheSet,
cacheGet,
}
// src\db\redis.js
const redis = require('redis')
const { redisConf } = require('../config/index')
// 创建客户端
const { port, host, password } = redisConf
const opt = {}
if (password) {
opt.password = password // prd 环境需要密码
}
const redisClient = redis.createClient(port, host, opt)
redisClient.on('error', err => {
console.error('redis connect error', err)
})
// 运行 node src/db/redis.js 进行测试连接
redisClient.on('connect', () => {
console.log('redis connect success')
redisClient.set('foo', 'bar', redis.print) // => "Reply: OK"
redisClient.get('foo', redis.print) // => "Reply: bar"
redisClient.quit()
})
module.exports = redisClient
控制台执行 node src/db/redis.js
,出现 success
说明连接成功了。
进一步测试数据库连接
// src\routes\index.js
const router = require('koa-router')()
const packageInfo = require('../../package.json')
const testMysqlConn = require('../db/mysql2')
const ENV = require('../utils/env')
const { WorkModel } = require('../models/WorksModel')
const { cacheGet, cacheSet } = require('../cache/index')
// 测试数据库连接
router.get('/api/db-check', async (ctx) => {
// 测试 mysql 数据库连接
const mysqlRes = await testMysqlConn()
// 测试 mongodb 数据库连接
let mongodbConn
try {
mongodbConn = true
await WorkModel.findOne()
} catch (error) {
mongodbConn = false
}
// 测试 Redis 连接
cacheSet('name', 'biz editor sever OK - by redis')
const redisTestVal = await cacheGet('name')
ctx.body = {
errno: 0,
data: {
name: 'biz editor server',
version: packageInfo.version,
ENV,
mysqlConn: mysqlRes.length > 0,
mongodbConn,
redisConn: redisTestVal != null,
}
}
})
module.exports = router
访问 http://localhost:3000/api/db-check
,redisConn
的结果为 true
,也进一步证明了 Redis
数据库连接成功了。