本地缓存与Redis同步协同创新的提升效率之路(本地缓存同步redis)

在缓存技术的发展中,本地缓存与Redis协同并行竞争更是是发出一声挑战。越来越多的企业正在将Redis纳入他们缓存策略中,以此来提高网站可用性,同时 Improve 性能、响应速度等,但如何将本地缓存与 Redis 进行同步协同是重中之重。

一般来说,新增、更新和删除操作可以直接向 Redis 投递进行操作,这样的话,Redis缓存的数据就会与本地缓存(比如Memcache 等)的数据进行不断的同步和协同,保证 Redis 中的数据最新且更加准确。

为此,系统架构师也积极的针对本地缓存与 Redis 的同步协同有多种创新性的解决方案。比如:采用 ActiveMQ 做中间件。Redis 后台处理后将topic发送到 ActiveMQ 中,ActiveMQ 会监听到 topic,将 本地缓存 (如 Memcache) 数据做出相应更新;同时,可采用定时任务 (如,Spring 定时任务) +AJAX 来一定时间自询返 Redis 缓存数据,不断进行更新共享到本地缓存中,同时,该任务也可以添加 Spring AOP 动态拦截、log等。

比如,

@EnableScheduling

@EnableAsync

public class ScheduledTasks {

private final Logger logger = LoggerFactory.getLogger(getClass());

@Autowired

private RedisService redisService;//redis

@Autowired

private MemcacheService memcacheService;//memcache

// 任务

@Scheduled(cron =”0/5 * * * * ?”)//每5秒执行一次

async void syncData () throws InterruptedException {

// 隔断一段时间,来查询 Redis 中数据,然后将数据同步到 Memcache 服务器中

ListallData = redisService.getAllData();

allData.forEach(data -> memcacheService.setData(data));

}

}

此外,可采用订阅频道(sub channel) + 程序回调,Redis 缓存处理完毕并回调“sub channel”中的一个事件,程序监听事件 进行回调,然后将最新的 Redis cache信息 完全同步到本地缓存中。

综上,Redis 所发挥出的威力源于相应的技术协同,从而使本地缓存与Redis 同步协同成为可能。在此,弥补技术间的缺失,是我们一直在探究的任务——用创新的手段提升效率,这才是把企业系统开发模式的路。


数据运维技术 » 本地缓存与Redis同步协同创新的提升效率之路(本地缓存同步redis)