缓存
LwinnerG
这个作者很懒,什么都没留下…
展开
-
Redis缓存穿透“新杀招“:布隆过滤器Bloom Filter
场景分析 这篇文章来讲述缓存穿透的补充解决方案. 为什么要用补充来形容呢? 在之前的文章中,我们提到缓存穿透的解决方案时,我是这么说的: 关于缓存穿透,我们可以在用户访问数据库后将null值存入Redis来解决. 那么这样就真的万无一失了吗?? No No No!!! 当然不是.我们设想如下的场景: 某组织或某个人就是想干掉你的服务器,他写了一个这样的程序: 定义n=-1; 使用循环,每次循环n=n-1; 然后每次循环都去利用n作为商品id访问你的数据库. 他将这个程序放在了他所控制的许多个客户端中. 那原创 2020-10-15 17:59:37 · 305 阅读 · 0 评论 -
Redis分布式锁的实现与解释
又是一个月黑风高的夜晚.... 在我翻阅自己文章的时候 猛然发现我的一篇文章涉及到了`分布式锁`, 而我并没有详细的解释分布式锁的实现方式, 这怎么能行? 这怎么可以? 于是乎...我擦了擦键盘上的灰,按下了生锈的主机电源按钮.... 心里怀着"安得广厦千万间,大庇天下寒士俱欢颜!"的雄心壮志 故事就这样开始了... 在使用Redis作为缓存的时候,在高并发的场景下,我们需要考虑哪些问题又该如何解决呢? 比如,在某一时刻,我们的缓存到期,而恰好,这个时候,这个数据的热度突然飙升,那我们的数据库该何去何从呢原创 2020-10-14 21:13:34 · 337 阅读 · 0 评论 -
Redis高并发常见问题:缓存穿透/缓存雪崩/缓存击穿的概念及解决方案
1.缓存穿透 概念 缓存穿透就是访问数据库中不存在的数据,高并发情况下或有人恶意的不停的访问该数据,导致请求打到数据库,直至数据库崩溃. 比如我们在写项目的时候,商品的主键id很少为负数.那么可能有人就会不停的访问id为-1的商品.而这个商品又不存在,导致我们的数据库崩溃. 解决方案 这里我通常的解决方案是在一个请求打到数据库返回null值时,在redis中给这个商品的key存入一个empty数据.使后边的请求直接访问redis而不是再去访问数据库. jedis.setex(key,60,"empty"原创 2020-10-08 02:17:12 · 493 阅读 · 0 评论 -
简述Redis与Memcached的区别
Redis与Memcached都是比较优秀的缓存中间件.对于这两者的选择,我们可以根据情景的不同做出不同的选择.本文简述一下这两者的部分区别.如下 数据类型方面 Redis支持五种数据类型.(String,List,Hash,Set,SortedSet) 而MemCached仅支持一种数据类型.(String) 持久化方面 Redis可以进行持久化操作 Redis将数据存储于内存中,但也会定时的将数据存放到硬盘中. 我了解到的存储到硬盘的方式有两种: RDB和AOF RDB:就是将数据创建一个快照,存储到硬原创 2020-10-10 11:44:00 · 315 阅读 · 2 评论