1.初识Redis
计算机领域的任何问题都可以通过增加一个间接的中间层来解决
1.Redis介绍
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的,使用C语言编写、支持网络调用、基于内存亦可持久化的Key-Value数据库,并提供多种语言的API。
Redis官网
redis.io
2.特性 (掌握)
面试题:为什么要用Redis?
1、内存数据库,快,很快.......
2、工作单线程worker,串行化、原子操作. (IO线程是多线程)- 避免上下文切换
3、IO模型(epoll), 天生支撑高并发.
4、kv模型,v具有类型结构.
5、具有本地方法,计算向数据移动。(a,b) => 交集
-
二进制安全。Value最大512M
3.面试题(掌握)
Redis到底是多线程还是单线程?
4.Docker 安装
1)启动server
docker run -d -p 6379:6379 --name redis01 redis:7.2.4
以上命令,每次启动新的Redis容器,数据会丢失。
我们需要挂载数据文件,在宿主机上面,这样就可以持久化数据.
docker run -p 6379:6379 -d --name redis01 --restart=always
-v /opt/redis/redis.conf:/etc/redis.conf
-v /opt/redis/data:/data
redis:7.4.0 redis-server /etc/redis.conf
//如果拉不下来请使用m.daocloud.io/docker.io/redis:7.4.0
What is the location of redis.conf in official docker image? - Stack Overflow
使用redis就得配置文件redis.conf,如下
配置文件需要修改3个地方,不过这个附件配置文件我已经改好了
1)默认是 bind 127.0.0.1 -::1 , 只绑定本机回环地址,其它ip不绑定所以不能通过其它ip访问
2)认情况下,保护模式是开启的 (protected-mode yes
)。这意味着只有本机上的客户端才能连接到 Redis 服务器,而来自其他主机的连接会被拒绝。所以要设置为no
3)是否开启AOF持久化
2)启动客户端 (了解)
docker run -it --rm m.daocloud.io/docker.io/redis:7.4.0 redis-cli -h 192.168.13.45 -p 6379 --raw
##注意要提前关闭防火墙,不然外部访问不了
systemctl stop firewalld
3) 客户端GUI工具
RedisInsight-v2-win-instal
Redis Insight
5.Redis数据持久化 (掌握-面试题)
Redis是一个内存数据库,一旦断电或服务器进程退出,内存数据库中的数据将全部丢失,所以需要Redis持久化
Redis持久化就是把数据保存在磁盘上,利用永久性存储介质将数据保存,在特定的时间将保存的数据进行恢复的工作机制
Redis持久化方案
https://v.douyin.com/iMgydYjV/
Redis提供两种持久化机制:
-
RDB:存储数据结果,关注点在数据(快照)
-
AOF:存储操作过程,关注点在数据的操作过程(命令)
5.1 RDB(Redis DataBase)
在指定的时间间隔内将内存中的数据集中写入磁盘,也就是快照(Snapshot),数据恢复是将快照文件直接读到内存中。
Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入一个到一个临时文件(dump.rdb)中,待持久化过程结束后,再用本次的临时文件替换上次持久化后的文件。fork函数的作用是复制一个与当前进程一样的进程,新进程的所有数据数值都和原进程一致,但是一个全新的进程,并作为原进程的子进程。
RDB的触发方式:(了解)
-
手动触发:通过命令手动生成快照 (save,bgsave)
-
自动触发:通过配置参数的设置触发自动生成快照
RDB的优缺点:
缺点:
-
快照时间有间隔,不能实时备份,丢失数据可能会比较多
-
开启子进程备份数据,在数据集比较庞大时,fork()可能会非常耗时,造成服务器在一定时间内停止处理客户端。
优点:
1.恢复数据比较快
2.备份的文件就是原始内存数据的大小,不会额外增加数据占用。
5.2 AOF(Append Only File)
将客户端的每一个写操作命令以日志的形式记录下来,追加到appendonly.aof的文件末尾,在redis服务器重启时,会加载aof文件中的所有命令,来达到数据恢复的目的。
当有写命令请求时,会追加到AOF缓冲区内,AOF缓冲区根据AOF持久化策略[always,everysec,no]将操作同步到磁盘的AOF文件中,当AOF文件大小超过重写策略或手动重写时,会对AOF文件进行重写来压缩AOF文件容量,redis服务重启时,会重新加载AOF文件中的写操作来进行数据恢复
AOF的触发方式(了解)
1.手动触发
通过bgrewriteaof
命令:重新AOF持久化生成aof文件(触发重写)
2.自动触发
默认情况,redis是没有开启AOF(默认使用RDB持久化),需要通过配置文件开启
AOF的优缺点:
优点:
-
数据安全性高,不易丢数据
-
AOF文件有序保存了所有写操作,可读性强
缺点:
-
AOF方式生成文件体积变大
-
数据恢复速度比RDB慢
6.Redis 结构体
https://kdocs.cn/l/cl4wczGSiQVm
Commands
Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker
https://redis.io/commands/
Redis 命令参考 — Redis 命令参考
http://doc.redisfans.com/