day50_java_基础巩固

简介: 自己所掌握的基础知识加以巩固和记录!希望大家点赞收藏并能给予鼓励和支持!有任何建议或者帮助也可以来哦!!!虽然有些干货知识很通俗,但也是自己的必经之路i,加油!!!

redis 的持久化:

Redis 提供了两种持久化的方式,分别是 RDB(Redis DataBase)和 AOF(

AppendOnly File)。

RDB,简而言之,就是在不同的时间点,将 redis 存储的数据生成快照并存储到磁盘

等介质上。

AOF,则是换了一个角度来实现持久化,那就是将 redis 执行过的所有写指令记录下

来,在下次 redis 重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现

数据恢复了。

RDB 和 AOF 两种方式也可以同时使用,在这种情况下,如果 redis 重启的话,则会

优先采用 AOF 方式来进行数据恢复,这是因为 AOF 方式的数据恢复完整度更高。

Redis 的缺点:

缓存和数据库双写一致性问题

一致性的问题很常见,因为加入了缓存之后,请求是先从 redis 中查询,如果 redis 中

存在数据就不会走数据库了,如果不能保证缓存跟数据库的一致性就会导致请求获取到的数

据不是最新的数据。

解决方案:

1、编写删除缓存的接口,在更新数据库的同时,调用删除缓存

的接口删除缓存中的数据。这么做会有耦合高以及调用接口失败的情况。

2、消息队列:ActiveMQ,消息通知。

缓存的并发竞争问题

并发竞争,指的是同时有多个子系统去 set 同一个 key 值。

解决方案:

1、最简单的方式就是准备一个分布式锁,大家去抢锁,抢到

锁就做 set 操作即可

缓存雪崩问题

缓存雪崩,即缓存同一时间大面积的失效,这个时候又来了一波

请求,结果请求都怼到数据库上,从而导致数据库连接异常。

解决方案:

1、给缓存的失效时间,加上一个随机值,避免集体失效。

2、使用互斥锁,但是该方案吞吐量明显下降了。

3、搭建 redis 集群。

缓存击穿问题

缓存穿透,即黑客故意去请求缓存中不存在的数据,导致所有的请求都怼到数据库上,

从而数据库连接异常。

解决方案:

1、利用互斥锁,缓存失效的时候,先去获得锁,得到锁了,

再去请求数据库。没得到锁,则休眠一段时间重试

2、采用异步更新策略,无论 key 是否取到值,都直接返回,

value 值中维护一个缓存失效时间,缓存如果过期,异步起一个线程

去读数据库,更新缓存。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
4月前
|
Java 编译器
java基础
【4月更文挑战第5天】java基础
42 2
|
4月前
|
存储 缓存 安全
Java 基础
• Field : 可以使用 get() 和 set() 方法读取和修改 Field 对象关联的字段; • Method : 可以使用 invoke() 方法调用与 Method 对象关联的方法; • Constructor : 可以用 Constructor 创建新的对象。 Advantages of Using Reflection: • Extensibility Features : An application may make use of external, user-defined classes by creating instances of extensibility
|
NoSQL Java 数据库连接
day40_java_基础巩固
自己所掌握的基础知识加以巩固和记录!希望大家点赞收藏并能给予鼓励和支持!有任何建议或者帮助也可以来哦!!!虽然有些干货知识很通俗,但也是自己的必经之路i,加油!!!
|
存储 NoSQL MongoDB
day60_java_基础巩固
自己所掌握的基础知识加以巩固和记录!希望大家点赞收藏并能给予鼓励和支持!有任何建议或者帮助也可以来哦!!!虽然有些干货知识很通俗,但也是自己的必经之路i,加油!!!
|
存储 Java
day07_java基础
自己所掌握的基础知识加以巩固和记录!希望大家点赞收藏并能给予鼓励和支持!有任何建议或者帮助也可以来哦!
|
4月前
|
存储 Java 开发工具
day04_java基础
day04_java基础
|
消息中间件 存储 RocketMQ
day59_java_基础巩固
自己所掌握的基础知识加以巩固和记录!希望大家点赞收藏并能给予鼓励和支持!有任何建议或者帮助也可以来哦!!!虽然有些干货知识很通俗,但也是自己的必经之路i,加油!!!
|
缓存 负载均衡 应用服务中间件
day61_java_基础巩固
自己所掌握的基础知识加以巩固和记录!希望大家点赞收藏并能给予鼓励和支持!有任何建议或者帮助也可以来哦!!!虽然有些干货知识很通俗,但也是自己的必经之路i,加油!!!
|
程序员
day37_java_基础巩固
自己所掌握的基础知识加以巩固和记录!希望大家点赞收藏并能给予鼓励和支持!有任何建议或者帮助也可以来哦!!!虽然有些干货知识很通俗,但也是自己的必经之路i