360商城缓存使用初探
添加/删除收藏流程优化(Guava+Redis)
一、缓存的使用
Google的Cache——Guava
- 本地缓存开关
创建缓存对象
1private static Cache<String, String> CACHE_SWITCH = CacheBuilder.newBuilder().maximumSize(100).expireAfterWrite(2, TimeUnit.MINUTES).build();调用缓存中的get方法,当缓存命中时直接返回结果,当不命中时,通过给定的Callable类call()方法返回结果,再缓存。
|
|
Redis缓存
- 生成Redis的key
|
|
调用cacheClient
1String favor = cacheClient.get(favoriteItemVo.getTenantId(), redisKey);保存到Redis
12//favorFlag为value,0为expireSecondcacheClient.save2Cache(favoriteItemVo.getTenantId(), redisKey, favorFlag, 0);
二、缓存逻辑
- 本地缓存作为开关,如果有收藏功能,流程才继续
- 查Redis看是否命中缓存,如果命中,收藏结束
- (Redis未命中)查询商品是否已经收藏
- 如果已经收藏,补充Redis缓存内容
- (商品未收藏)启动DAO操作,向数据库中添加信息
三、二级缓存的好处到底是什么?
在缓存到远程Redis的同时,缓存一份到本地进程Cache。使用了这样的二级缓存之后,取缓存的时候会先取本地,本地没有再向redis请求。这样会减少应用服务器<–>缓存服务器redis之间的网络开销。