- 博客(18)
- 收藏
- 关注
原创 Java面试 Redis篇-IO阻塞,多路复用
嗯~~,I/O多路复用是指利用单个线程来同时监听多个Socket,并且在某个Socket可读、可写时得到通知,从而避免无效的等待,充分利用CPU资源。目前的I/O多路复用都是采用的epoll模式实现,它会在通知用户进程Socket就绪的同时,把已就绪的Socket写入用户空间,不需要挨个遍历Socket来判断是否就绪,提升了性能。其中Redis的网络模型就是使用I/O多路复用结合事件的处理器来应对多个Socket请求,比如,提供了连接应答处理器、命令回复处理器,命令请求处理器;
2024-11-08 21:52:09 290
原创 Java面试 Redis篇-Redis集群方案
单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。分片集群,单线程,脑裂,哨兵模式
2024-11-08 21:07:35 795
原创 Java面试 Redis篇-redis分布式锁
Redisson是一个基于Redis的 Java 客户端库,提供了分布式数据结构、分布式锁、分布式集合等功能。Redisson 在 Redis 的基础上封装了更多高级功能,目的是让开发者能够更方便地在 Java 程序中使用 Redis,同时简化开发中的一些复杂问题,如分布式锁、异步任务管理等。
2024-11-08 20:51:30 873
原创 Java面试 Redis篇 -数据淘汰策略
当Redis中的内存不够用时,此时在向Redis中添加新的key,那么Redis就会按照某一种规则将内存中的数据删除掉,这种数据的删除规则被称之为内存的淘汰策略。
2024-11-08 20:28:15 187
原创 Java面试 Redis篇 -数据过期策略
Redis对数据设置数据的有效时间,数据过期以后,就需要将数据从内存中删除掉。可以按照不同的规则进行删除,这种删除规则就被称之为数据的删除策略(数据过期策略)。Redis使用的是结合的方式。
2024-11-08 20:26:18 150
原创 Java面试 Redis篇-数据持久化
1.RDB,可以理解为在指定的时间间隔内生成一次数据快照(二进制的文件),以此将缓存数据持久化到硬盘当中。但是,在两次保存中间的数据,当服务宕机时,由于没有存入快照,所以无法恢复。通过执行bgrewriteaof命令,可以让AOF文件执行重写功能,用最少的命令达到相同效果。但是因为存储的是指令操作,所以文件较大,占用硬盘的IO资源。bgsave开始时会fork主进程得到子进程,子进程共享主进程的内存数据,完成fork后读取内存数据并写入RDB文件。当主进程执行写操作时,则会拷贝一份数据,执行写操作。
2024-11-08 20:08:42 483
原创 Java面试 redis篇-缓存雪崩
缓存雪崩意思是,设置缓存时采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到DB,DB瞬时压力过重而雪崩。与缓存击穿的区别是:雪崩是很多key,而击穿是某一个key缓存。比如,可以在原有的失效时间基础上增加一个随机值,比如1-5分钟随机。这样,每一个缓存的过期时间的重复率就会降低,就很难引发集体失效的事件。缓存雪崩是指在同一时段,大量的缓存key同时失效或者Redis服务突然宕机,导致请求直接到达数据库,带来巨大压力。其中给缓存业务添加降级限流策略可以作为缓存穿透、击穿、雪崩的保底策略。
2024-11-05 11:24:14 90
原创 Java面试 Redis篇 缓存击穿
给缓存中的某一个key设定了过期时间,当key国旗时,恰好这个时间点对这个key有大量的并发请求过来,这些并发请求可能会瞬间把DB压垮。在新增数据到缓存时,直接维护过期时间即可。在有大量请求时,在请求未命中时使用互斥锁,重新查询数据库并且重建缓存数据写入缓存后释放锁才让其他请求访问查询缓存。当查询数据时,查询缓存发现逻辑时间已经过期,这时获取互斥锁,使用一个线程去进行缓存重建。在线程锁期间,有其他请求查询缓存未命中时,会不断尝试获取互斥锁、休眠,直到锁被释放。优点:性能较好,高可用性。
2024-11-05 11:08:17 102
原创 JAVA面试-Redis篇专栏 缓存穿透
JAVA reids面试热点基础内容。缓存穿透,布隆过滤器。本文创作基础是黑马面试专题2023,撰写本文的目的一方面是自己加深记忆,另一方面供各位参考复习,如有侵权联系删除,感谢各位理解,祝上岸!
2024-11-05 10:31:18 226
原创 SpringCache的简单应用和实现原理
Spring Cache 提供了一层抽象,允许开发者在不关心底层实现的情况下使用缓存。Spring通过:基于Redis的分布式缓存。:基于EhCache的内存缓存。:高效的本地缓存实现。这种抽象方式使得开发者可以根据需求灵活切换底层缓存实现,而不需要改变业务逻辑代码。Spring Boot默认支持Redis缓存。如果你希望使用Redis作为缓存实现,只需引入Redis依赖,并在配置文件中进行简单的配置。配置Redis连接信息你可以通过自定义来设置缓存的TTL(过期时间)或序列化方式。@Bean。
2024-10-23 12:15:34 743
原创 遇到@Cacheable(cacheNames = “userCache“,key = “#id“)无法解析符号
确保你的项目已经引入了Spring Cache相关的依赖。如果你在使用Spring Boot,确保。直接在主类(如Spring Boot主启动类)上加上。应该使用第一个,错误使用了第二个。(Gradle)文件中。
2024-10-23 11:50:11 176
原创 Redis缓存的简单应用,如何理解缓存的作用
缓存(Cache)是计算机系统中的一种高效存储机制,用于临时存储经常访问或近期使用的数据。其核心目的是减少对较慢存储设备(如硬盘、网络或数据库)的访问频率,从而加速数据读取,提升系统性能。在许多应用场景中,如数据库查询、网络请求等,缓存技术广泛应用,通过避免重复获取相同的数据,大幅度提升了响应速度。
2024-10-22 22:08:38 691
原创 Another Redis Desktop Manager打开后白屏问题解决方案
解决Another Redis Desktop Manager在某些独立显卡的电脑上打开之后的白屏问题
2024-10-20 21:05:48 249
原创 小白如何简单理解servlet,生动告诉你
客户端发送http请求给服务端,这个请求可以是获取网页、提交表单数据、下载文件等,服务端通过web服务器(Tomcat)将http请求解析为request(HttpServletRequest)对象给servlet,servlet处理request对象请求,并返回一个response对象(HttpServletResponse)(对象中包含了返回给客户端的数据,例如HTML页面、JSON数据等),web服务器将response对象解析为http响应,发送给客户端。
2024-10-06 22:54:34 177
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人