固安建设局网站wordpress 开发商城
web/
2025/9/27 9:00:21/
文章来源:
固安建设局网站,wordpress 开发商城,手表网站 海马300米潜水表,自己做网站模版目录 引出Redis事务支持#xff0c;AOF和RDB持久化1、Redis的事务支持2、Redis的持久化 Redis冲冲冲——缓存三兄弟#xff1a;缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出
Redis冲冲冲——事务支持#xff0c;AOF和RDB持久化 Redis事务支持#xff0c;AOF和… 目录 引出Redis事务支持AOF和RDB持久化1、Redis的事务支持2、Redis的持久化 Redis冲冲冲——缓存三兄弟缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出
Redis冲冲冲——事务支持AOF和RDB持久化 Redis事务支持AOF和RDB持久化
1、Redis的事务支持
事务一段具有明确开始结束标记的并且执行顺序是有序的执行过程 比如张三给李四转钱 5000 ACID原子性一致性隔离性持久性
咱们Redis同样支持事务配合关系型数据库进行事务支持 开启事务multi 执行事务exec 撤销事务discard 监控某Keywatch 采用原理乐观锁 乐观锁依靠版本控制来进行实现底层原理CAS Comparable And Swap 比较并交换 用户在操作库的时候乐观的认为一定没有人和我同时操作同一条数 悲观锁用户在操作库的时候悲观的认为一定有人和同时操作同一条数据依旧数据库底层上锁在SQL语句后添加select * from 表 for update; 在需要控制事务的方法上添加注解Transactional
2、Redis的持久化 Redis的数据更多的依赖于内存问题可能存在数据丢失的问题 解决Redis提供持久化机制RDB,AOP 所以Redis为了解决内存不靠谱的问题 提供2种硬盘持久化方案 RDB AOF 1、RDB Redis Database Backup file RDB Redis Database是Redis默认的一种持久化方案叫快照模式
原理dump.rdb文件来进行存储Redis当前的数据状态
下载Redis的配置文件
curl -o redis.conf https://raw.githubusercontent.com/redis/redis/6.0/redis.conf60S—-1分钟范围内如果redis监控到有10000条数据的变化开始持久化 300S—5分钟范围内如果redis监控到有10条数据的变化开始持久化 900S —15分钟范围内如果redis监控到有1条数据的变化开始持久化 所以RDB在一定程度上可能存在数据丢失的问题 Redis服务器会定时开启子进程在固定时间扫描内存的数据变化 当条件满足则将变化先通过临时文件中去最后
再将临时文件的内容写入到dump.rdb文件中即可完成持久化 如果需要修改 取消本机绑定 取消本机客户端保护模式 为了保护redis请大家设置连接密码 提醒下在vim中使用“/关键字”快速查找关键字并通过N或n 快速定位上一个/下一个 修改redis.conf的权限
chmod 777 redis.conf重新创建一个Redis的Docker容器
docker run --name myredis -p 6379:6379 -v /root/redis/redis.conf:/usr/local/etc/redis/redis.conf -v /root/redis/data:/data --privilegedtrue -d redis:latest redis-server /usr/local/etc/redis/redis.conf2、AOF
AOF Append Only File 采用日志追加的方式来记录Redis的相关操作命令
MySQL 有一种二进制日志文件记录用户对CUD的所有SQL语句
AOF 记录是用户对Redis所有的命令不是默认开启的需要 运维 手动通过配置文件进行开启
产生一个文件appendonly.aof
追加方法everysec 每秒追加一次日志, always记录每次操作no 不记录
修改配置文件开启AOF 配置追加方式 AOF重写的原理 Redis 会自动监控AOF文件的变化当AOF文件达到64M或达到上次重写文件的2倍就会触发AOF文件重写机制
通过重写AOF文件来实现持久化Redis将进程分叉为2个进程一个主进程一个子进程主进程继续响应其他操作子进程开启重写机制
在重写时会产生2个文件一个AOF的临时文件一个AOF的缓存文件临时文件用于重写缓存文件用于主进程记录最新的命令操作
子进程通过重写整合命令至新的临时文件整合完成之后重命名为AOF文件并整合缓存文件中的其他命令完成重写 AOF RDB 如何选择 Redis冲冲冲——缓存三兄弟缓存击穿、穿透、雪崩
缓存击穿 缓存击穿redis中没有但是数据库有 顺序先查缓存判断缓存是否存在如果缓存存在直接返回数据如果缓存不存在則查询数据库将数据库的数据存入到缓存 解决方案将热点数据设置过期时间长一点针对数据库的热点访问方法上分布式锁
缓存穿透 缓存穿透redis中没有数据库也没有 解决方案
1将不存在的key在redis设置值为null
2使用布隆过滤器;
原理https://zhuanlan.zhihu.com/p/616911933 布隆过滤器
如果确认key不存在于redis中那么就一定不存在
它说key存在就有可能存在也可能不存在 误差 布隆过滤器 1、根据配置类中的 key的数量 误差率计算位图数组【二维数组】 2、通过布隆过滤器存放key的时候会计算出需要多少个hash函数由hash函数算出多少个位图位置需要设定为1 3、查询时根据对应的hash函数判断对应的位置值是否都为1如果有位置为0则表示key一定不存在于该redis服务器中如果全部位置都为1则表示key可能存在于redis服务器中 缓存雪崩 缓存雪崩 Redis的缓存雪崩是指当Redis中大量缓存数据同时失效或者被清空时大量的请求会直接打到数据库上导致数据库瞬时压力过大甚至宕机的情况。
造成缓存雪崩的原因主要有两个
1.相同的过期时间当Redis中大量的缓存数据设置相同的过期时间时这些数据很可能会在同一时间点同时失效导致大量请求直接打到数据库上。
2.缓存集中失效当服务器重启、网络故障等因素导致Redis服务不可用且缓存数据没有自动进行容错处理当服务恢复时大量的数据同时被重新加载到缓存中也会导致大量请求直接打到数据库上。
预防缓存雪崩的方法主要有以下几种
1.设置不同的过期时间可以将缓存数据的过期时间分散开避免大量缓存数据在同一时间点失效。
2.使用加锁可以将所有请求都先进行加锁操作当某个请求去查询数据库时如果还没有加载到缓存中则只让单个线程去执行加载操作其他线程等待该线程完成后再次进行判断避免瞬间都去访问数据库从而引起雪崩。
3.提前加载预热在系统低峰期可以提前将部分热点数据加载到缓存中这样可以避免在高峰期缓存数据失效时全部打到数据库上。
4.使用多级缓存可以在Redis缓存之上再使用一层缓存例如本地缓存等当Redis缓存失效时还能够从本地缓存中获取数据避免直接打到数据库上。 本地缓存ehcache oscache spring自带缓存 持久层框架的缓存 总结
Redis冲冲冲——事务支持AOF和RDB持久化
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/82665.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!