浅谈分布式缓存解决方案!

接口高并发的解决思路:

  • 加缓存

  • 数据静态化

  • 集群

  • 分布式

  • 同步转异步

  • 限流、降级

适合加缓存的场景:

  • 读多写少的数据,不经常需要修改的数据、一致性要求不高(数据只能保持最终一致性,不能保证数据同步一致性)

缓存的概念

1)外存

外存储器是指除计算机内存及CPU缓存以外的存储器,断电后仍然能保存数据。常用的有硬盘、u盘等。

2)内存

内存是计算机组成部分。被称为内存存储器,其作用是暂时存放CPU运算数据,以及与外存之间交互的存储器。只要计算机在运行中,CPU就会把需要运算的数据读到内存中,当运算完成后CPU在将运算结果写到外存中。断电后数据就会清空,常用的有内存条。

3)缓存

缓存就是介于内存和外存之间的存储,加快内存和外存之间的数据交互。软件中间件一般用外部计算机内存当缓存。

4)缓存的指标

1)缓存命中率

从缓存中读取数据的次数与总读取次数的比率,命中率越高越好。

2)缓存更新策略

如果缓存满了,从缓存中清除数据的策略。常见的有:LFU、LRU、FIFO

  • LRU(Least Recently Used):最久未使用算法,使用时间距离现在最久的那个被移除。

  • LFU(Least Frequencyly Used):最少使用算法,一定时间使用次数最少的那个被移除。

  • FIFO(First In First Out):先进先出算法,先放入缓存的先被移除。

Redis缓存在Java中的实现

在java代码中,我们一般对调用的方法进行缓存控制,比如我要查询具体的省市区县数据,findProvidenceAndCityAndArea(String id),那么我们应该在调用这个方法之前先从缓存中查找有没有这个数据,如果没有在调用该方法从数据库中查询,然后添加到缓存中去;下次接口调用时将会从缓存直接获取数据。Java中使用分布式缓存Redis。

1)缓存逻辑流程图

查询策略:

修改策略:

2)逻辑流程代码

查询代码:

/**
 * 使用缓存,根据省份ID获取省市数据
 * @param provinceid
 * @return
 */
@Override
public Provinces detail(String provinceid) {
    Provinces provin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值