cache
文章平均质量分 83
JFS_Study
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
展开
-
Redis
一、简述Redis 全称Remote Dictionary Server。是一个开源的 BSD 许可的,使用 ANSIC 语言编写、支持网络、基于内存亦可持久化的日志型、高级的 key-value 存储系统,并提供多种语言的 API。整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据 flush 到硬盘上进行保存。因为是纯内存操作,Redis 的性能非常出色,每秒可以处理超过 10 万次读写操作,是已知性能最快的 Key-Value DB。Redis 的出色之处不仅仅是性能,Redis.原创 2022-01-17 10:23:51 · 1356 阅读 · 0 评论 -
缓存穿透、击穿、雪崩
一、缓存穿透缓存穿透是指缓存和数据库中均不存在目标数据,而用户不断发起请求,缓存也得不到更新,由此每次请求该数据都会到数据库层面。高并发量,就会对后端的 DB 系统造成很大压力。如查询 id 为“-1”或不存在的数据,此时用户很可能是攻击者,攻击会导致数据库压力过大。关键点:缓存 value 为空;并发量很大去访问 DB。通俗理解,直接把缓存穿透了,没有利用到缓存。1️⃣造成的原因业务自身代码或数据出现问题。一些恶意攻击、爬虫造成大量空的命中,此时会对数据库造成很大压力。2️⃣解决方法接口原创 2022-01-19 09:53:17 · 1460 阅读 · 1 评论 -
Redis生产环境安全加固条规
禁止操作系统超级用户启动和停止redis-server禁止redis-server监听0.0.0.0的地址禁止密码明文存储禁止在redis中保存敏感信息配置redis示例max-memory,限制其最大内存,配置策略清理策略配置实例目录权限和属组,一般目录为700,文件为600配置节点iptables,限制访问redis-server的客户端ip配置redis日志清理策略,防止磁盘空间占满禁止不使用的高危命令,重命名其他需要使用的高危命令使用非默认端口和非默认集群端口,比如单机默认是63.原创 2022-01-19 09:28:36 · 2471 阅读 · 0 评论 -
Redis对于过期key的三种删除策略
一、简述Redis 中过期 key 的删除策略,分为三种:定时删除、定期删除、惰性删除。其中,定时删除和定期删除是主动删除策略,惰性删除是被动删除策略。二、定时删除定时删除是在设置 key 的过期时间的同时,会创建一个定时器(timer)。定时器在 key 的过期时间来临时,立即执行对 key 的删除操作。1️⃣优点:保证过期 key 会尽可能快的被删除,并释放过期 key 所占用的内存。2️⃣缺点:对 CPU 时间最不友好。在过期 key 比较多的情况下,删除过期 key 这一行为可能会占用原创 2022-01-19 09:27:29 · 4675 阅读 · 0 评论 -
Redis和MySQL数据一致性方案
一、需求起因高并发业务场景,数据库通常都是用户并发访问最薄弱的环节。所以,就需要使用 Redis 做一个缓冲操作,让请求先访问到 Redis,而不是直接访问 MySQL 等数据库。从 Redis 读数据,一般都是按照下图的流程来进行业务操作:读取缓存步骤一般没有什么问题,但是一旦涉及到数据更新:数据库和缓存更新,就容易出现缓存(Redis)和数据库(MySQL)间的数据一致性问题。不管是先写数据库,再删除缓存;还是先删除缓存,再写数据库,都有可能出现数据不一致的情况。比如:如果删除了缓存,还没有来原创 2022-01-18 16:27:21 · 860 阅读 · 0 评论 -
SpringBoot缓存注解@Cacheable、@CacheEvict和@CachePut
一、简述从 3.1 开始,Spring 引入了对 Cache 的支持。其使用方法和原理都类似于 Spring 对事务管理的支持。Spring Cache 是作用在方法上的,其核心思想:当调用一个缓存方法时,会把该方法参数和返回结果作为一个键值对存放在缓存中,等到下次利用同样的参数来调用该方法时将不再执行该方法,而是直接从缓存中获取结果进行返回。所以在使用 Spring Cache 的时候,要保证缓存的方法对于相同的方法参数要有相同的返回结果。使用 Spring Cache 需要做到两点:1️⃣在 Spr原创 2022-01-18 16:24:28 · 1573 阅读 · 0 评论 -
Redis 是单线程的正确理解
一、为什么Redis是单线程的1️⃣官方答案因为 Redis 是基于内存的操作,CPU 不是 Redis 的瓶颈。Redis 的瓶颈最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且 CPU 不会成为瓶颈,那就顺理成章地采用单线程的方案了。2️⃣性能指标关于 Redis 的性能,官方网站也有,普通笔记本轻松处理每秒几十万的请求。3️⃣详细原因不需要各种锁的性能消耗Redis 的数据结构并不全是简单的 Key-Value,还有 list,hash 等复杂的结构。这些结构有可能会进行原创 2022-01-18 16:17:28 · 5688 阅读 · 1 评论