contenido
prefacio
Redis es una base de datos muy útil. El método de acceso de pares clave-valor es muy simple. A menudo se usa como caché. Cómo usar como caché de base de datos, problema de falla de conexión remota de redis, problema de pérdida de datos de redis, dos configuraciones persistentes de RDB y AOF.
Instalar en pc
ventanas
El sitio web oficial de Redis no proporciona la descarga de la versión de Windows, cargué e instalé el paquete: redis-win64 .
linux
Descargar en el sitio web oficial: sitio web oficial de redis
puesta en marcha
Windows comienza como servicio
Descomprima Redis-x64-3.2.100.zip en una ubicación adecuada y cámbiele el nombre a Redis.
cmd ingresa a Redis y ejecuta el siguiente comando para iniciar el servicio:
redis-server.exe --service-install redis.windows.conf --loglevel verbose
redis-server --service-start
Otros comandos:
- Desinstalar el servicio:
redis-server --service-uninstall
- Iniciar el servicio:
redis-server --service-start
- Fuera de servicio:
redis-server --service-stop
- Cambiar el nombre del servicio:
redis-server --service-name name
inicio de linux como servicio
Pagoda (recomendado)
Pagoda linux puede instalar directamente el servicio de inicio automático.
Instalación manual
descomprimir
tar -xzvf redis-6.2.6.tar.gz
Ingresar
cd redis-6.2.6
Instalar en pc
make & make install
Verifique si hay un directorio src o bin en el directorio, ingrese el directorio src o bin y comience
./redis-server
prueba
El resto de las pruebas de contenido son todas operaciones de Windows.
cmd en Redis
redis-cli
set test 123
get test
utilizado en nodejs
paquete de guía
npm i redis
utilizar
Debido a que varias operaciones de redis son asíncronas, las envolvemos en una función asíncrona, que es mucho más conveniente.
import {
createClient} from 'redis'
(async () => {
//创建redis客户端
const redis = createClient()
//连接
await redis.connect()
//set
await redis.set('test', '123')
//get
const value = await redis.get('test')
console.log(value)//123
})()
Uso en interfaz con express
Esto, además, importa express
(servicio) y cors
(resuelve dominios cruzados), y coloca todas las creaciones en el ámbito de la función asíncrona .
import express from 'express'
import cors from 'cors'
import path from 'path'
import {
createClient} from 'redis'
(async () => {
const app = new express()
app.use(express.json())
app.use(cors())
app.use(express.static(path.resolve('./img')))
const redis = createClient()
await redis.connect()
app.get('/getValue', async (req, res) => {
await redis.set('key', 'value')
const value = await redis.get('key')
res.send({
value})
})
app.listen(3000, () => {
console.log('服务器启动')
})
})()
Pruebas de front-end
<body>
<button onclick="test()">获取信息</button>
<script>
const test = async () => {
const res = await fetch('http://localhost:3000/getValue')
const data = await res.json()
console.log(data)
}
</script>
</body>
redis como caché de base de datos
import express from 'express'
import cors from 'cors'
import path from 'path'
import {
createClient} from 'redis'
(async () => {
const app = new express()
app.use(express.json())
app.use(cors())
app.use(express.static(path.resolve('./img')))
const redis = createClient()
await redis.connect()
const cache = async (req, res, next) => {
//尝试读取缓存中的数据
const value = await redis.get('key')
if (value) {
res.send({
value: '数据来自缓存:' + value})
} else {
//不存在则去进行数据库读取
next()
}
}
app.get('/getValue', cache, async (req, res) => {
//这里偷个懒用databaseValue代替数据库读取来的数据
const databaseValue = 'value'
//用setEx函数存入redis,中间的数字代表缓存时间,这里设置为5秒方便测试
await redis.setEx('key', 5, databaseValue)
const value = await redis.get('key')
res.send({
value: '数据来自数据库:' + value})
})
app.listen(3000, () => {
console.log('服务器启动')
})
})()
El contenido de front-end no cambia y la prueba se solicita continuamente.
Descubrimos que el contenido leído de la base de datos se almacenará en caché durante 5 segundos, y las solicitudes dentro de los 5 segundos provendrán del caché.
Cuando se agota el tiempo de la memoria caché, se lee de la base de datos y se almacena nuevamente en la memoria caché, lo que reduce la presión sobre la base de datos.
Problema de falla de conexión remota de Redis
Windows modifica el directorio redis redis.windows.conf
y Linux lo modifica redis.conf
.
Comentebind 127.0.0.1
, desactive el Modo protegido protected-mode
en no
.
Vuelva a instalar el servicio de nuevo.
redis persistencia
A veces, los datos de redis se pierden accidentalmente con facilidad y, a veces, debemos dejar que guarde algunos datos permanentes, por lo que debemos ser persistentes.
Hay dos tipos de persistencia: RDB
y AOF
.
No estoy presentando las preguntas de la entrevista aquí, por lo que no presentaré los significados detallados de los dos tipos en detalle, que pueden entenderse fácilmente:
-
RDB
De acuerdo con las reglas, los datos de la copia de seguridad se escriben regularmente en el disco duro y los datos de la copia de seguridad se leen cuando se pierden . -
AOF
Es para guardar su operación de redis cada vez, y si los datos se pierden, ejecute la operación de redis guardada original a su vez y regenere los datos correspondientes .
configuración RDB
Después redis.conf
de agregar las siguientes opciones, reinicie el servicio redis.
save 900 1 # 900s内至少达到一条写命令
save 300 10 # 300s内至少达至10条写命令
save 60 10000 # 60s内至少达到10000条写命令
configuración AOF
Después redis.conf
de agregar las siguientes opciones, reinicie el servicio redis.
# 开启aof机制
appendonly yes
# aof文件名
appendfilename "appendonly.aof"
# 写入策略,always表示每个写操作都保存到aof文件中,也可以是everysec或no
# always保存每次操作最安全
# everysec每秒保存一次,最多可能会丢失1s数据
# no交给操作系统控制,未知因素更多,最不安全
appendfsync always
# 默认不重写aof文件
no-appendfsync-on-rewrite no
# 保存目录
dir ~/redis/
palabras finales
Creo que has dominado el uso de redis cuando ves aquí. Si crees que el artículo no es malo, dale me gusta y recógelo. Si tienes algún error o sugerencia, puedes dejar un mensaje, gracias ~