![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
缓存框架
文章平均质量分 70
介绍市面上火热的各种缓存
信仰_273993243
热爱技术热爱生活,希望大家共同进步
展开
-
Guava Cache介绍-面试用
GuavaCache常用操作、过期时间、过期策略原创 2023-09-19 11:47:12 · 614 阅读 · 0 评论 -
缓存和DB一致性-canal
canal、mq、tcp转载 2022-08-22 22:12:28 · 288 阅读 · 0 评论 -
缓存穿透、缓存雪崩、缓存击穿区别和解决方案
一、缓存穿透缓存穿透是指查询一个一定不存在的数据,从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。解决方案1、采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,定时把数据库的数据存到布隆过滤器中。请求进来不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。2、一个查询返回的数据为空,我们仍然把这个空结果进行缓存,但原创 2022-03-22 23:05:04 · 1751 阅读 · 0 评论 -
限流-redis+Lua
1、创建RateLimiter对象开始计时2、当需要获取令牌时,会计算好累计运行了多长时间,里面的计时器用的是google的StopWacht。3、计算需要获取的令牌减去池子里还剩多少令牌,如果池子里面的令牌不够,就预先扣的数量,再用这个预先扣的数量乘以速率,得到下一次获取令牌的人需要等待的时间。4、计算获取当前令牌数量乘以速率需要的时间。5、通过第二步得到的时间减去步骤四得到的时间,如果是大于0就让下一次获取令牌的人买单,如果小于或者等于0就直接跳过,睡眠时间为0c = redis.call(‘转载 2022-01-27 17:31:33 · 424 阅读 · 2 评论 -
Redis的使用场景
Redis的使用场景1、Redis+Lua实现限流原创 2022-01-27 17:34:17 · 810 阅读 · 0 评论 -
缓存分类及简单介绍
缓存1、本地缓存2、分布式缓存一、本地缓存1、CaffeineSpring官方的,springboot2.0默认集成的。2、Google Guava基于LRU算法3、EhCache这个也是非常优秀的进程内缓存框架,Hibernate默认的集成工具。二、分布式缓存1、redis2、Elasticsearch:基于Lucene的缓存...原创 2021-12-19 21:27:17 · 474 阅读 · 0 评论 -
redis批量操作性能对比
批量存储优缺点总结:1.性能对比:multiSet()>pipeline管道>普通for循环set2.扩展性强,可以支持设置失效时间。multiSet()不支持失效时间的设置//multiSet批量添加public void batchSet(Map<String, String> map) { stringRedisTemplate.opsForValue().multiSet(map);}//pipeline管道批量添加private void batch转载 2021-10-10 14:31:54 · 1801 阅读 · 0 评论 -
03-Redis数据结构-dict
如果你使用过Redis,一定会像我一样对它的内部实现产生兴趣。《Redis内部数据结构详解》是我准备写的一个系列,也是我个人对于之前研究Redis的一个阶段性总结,着重讲解Redis在内存中的数据结构实现(暂不涉及持久化的话题)。Redis本质上是一个数据结构服务器(data structures server),以高效的方式实现了多种现成的数据结构,研究它的数据结构和基于其上的算法,对于我们自己提升局部算法的编程水平有很重要的参考意义。当我们在本文中提到Redis的“数据结构”,可能是在两个不同的层面来转载 2021-05-23 12:02:48 · 258 阅读 · 0 评论 -
02-Redis数据结构-List
Redis列表list 底层原理在版本3.2之前,Redis 列表list使用两种数据结构作为底层实现:压缩列表ziplist双向链表linkedlist因为双向链表占用的内存比压缩列表要多, 所以当创建新的列表键时, 列表会优先考虑使用压缩列表, 并且在有需要的时候, 才从压缩列表实现转换到双向链表实现。压缩列表转化成双向链表创建新列表时 redis 默认使用 redis_encoding_ziplist 编码, 当以下任意一个条件被满足时, 列表会被转换成redis_encodin转载 2021-05-19 00:03:34 · 1833 阅读 · 0 评论 -
01-Redis数据结构-汇总
redis数据结构:stringString通过 int、SDS(simple dynamic string)作为结构存储,int用来存放整型数据,sds存放字节/字符串和浮点型数据。typedef char *sds;sdshdr有五种类型,所以至少需要3位来表示000:sdshdr5001:sdshdr8010:sdshdr16011:sdshdr32100:sdshdr64struct __attribute__ ((__packed__)) sdshdr8 { //8表示字符原创 2021-05-18 23:13:54 · 151 阅读 · 0 评论 -
Spring Boot通过Redis实现防止重复提交
一、目录1、什么是幂等,解决方案。2、实现思路。3、代码实践4、总结。二、什么是幂等。1、什么是幂等:相同的条极下,执行多次结果拿到的结果都是一样的。举个例子比如相同的参数情况,执行多次,返回的数据都是样的。那什么情况下要考虑幂等,重复新增数据。2、解决方案:解决的方式有很多种,本文使用的是本地锁。三、实现思路1、首先我们要确定多少时间内,相同请求参数视为一次请求,比如2秒内相同参数,无论请求多少次都视为一次请求。2、一次请求的判断依据是什么,肯定是相同的形参,请求相转载 2020-05-21 22:26:37 · 731 阅读 · 0 评论