java和Mysql数据一致性_8张图带你分析Redis与MySQL数据一致性问题

前言

对于Web来说,并发量和访问量增加一定程度上推动项目技术和架构的更迭和进步。可能会有以下的一些状况:

页面并发量和访问量并不多,MySQL足以支撑自己逻辑业务的发展。那么其实可以不加缓存。最多对静态页面进行缓存即可。

页面的并发量显著增多,数据库有些压力,并且有些数据更新频率较低反复被查询或者查询速度较慢。那么就可以考虑使用缓存技术优化。对高命中的对象存到key-value形式的Redis中,那么,如果数据被命中,那么可以不经过效率很低的db。从高效的redis中查找到数据。

当然,可能还会遇到其他问题,你还通过静态页面缓存页面、cdn加速、甚至负载均衡这些方法提高系统并发量。这里就不做介绍。

f4580dcb6123eca442c7ed6a63dcbc04.png

缓存思想无处不在

我们从一个算法问题开始了解缓存的意义。

问题1:

输入一个数n(n<20),求n!;

分析1:

单单考虑算法,不考虑数值越界问题。

当然我们知道n!=n * (n-1) * (n-2) * … * 1= n * (n-1)!;

那么我们可以用一个递归函数解决问题。

static long jiecheng(int n)

{

if(n==1||n==0)return 1;

else {

return n*jiecheng(n-1);

}

}

这样每输入求一次需要执行n次。

问题2:

输入t组数据(可能成百上千),每组一个xi(xi<20),求xi!;

分析2:

如果使用递归,输入t组数据,每次输入为xi,那么每次都要执行次数为:

当每次输入的Xi过大或者t过大都会造成不小的负担!时间复杂度为O(n2)

那么能否换个思想的。没错、是打表。打表常用于ACM算法中,常用于解决多组输入输出、图论搜索结果、路径储存问题。那么,对于这个求阶乘。我们只

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值