系统脱库与多级缓存

1. 组件设定缓存过期时间

public List queryorder(order vo)
	if(缓存为空){
		list= queryByCache(vo);//从数据库中读取数据
	}
	return list;
}

2. 代码设定缓存逻辑过期,可脱库运行

方法是利用时间戳,査询默认以 缓存数据为主,每次设置数据的时候放入一个时间戳,每次读取数据的时候用系统当前时间和上次设置的这个时间做对比。如下面代码示例所示,比如超过5分钟,那么就再查一次数据库,然后重新更新到缓存中。这种方式与设置 Redis超时时间方式的主要区别在于:过期时间是逻辑过期。当然Reids t中的数据第一次还是从DB中心获取的,但这样可以保证 Redis里面永远有数据,一般是对DB的一种容错方法,当DB“挂掉”的时候用户还可以请求 Redis中的数据。

public List queryorder(Order vo){
	//从缓存中查询数据
	list= queryByCache(vo);
	if1ist=nul1l当前时间距离上次查询时间超过了5分钟){
		//第一次査询的时候11st为null
		1ist= queryByDb(vo)//从数据库中读取数据
		//封装更新 Redis数据和时间的方法
		setredis(1ist,当前时间);
	}
	return list;
}

3. 根据数据热度不同,设置多级缓存

可以通过使用 JVM Cache作为应用内的一级缓存,一般是体积小、访问频率大的更适合这种 JVM Cache方式,再将一套Reis作为二级 remote缓存(一般存储活跃的热点业务数据),最外层三级 Redis作为持久化缓存。

JVM Cache:
使用static关键字开辟内存与搜索时间复杂度为O(1)的HashMap来存储数据提高读取效率;然后实现相应的缓存写入、更新、读取、删除等逻辑;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦里藍天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值