封装完函数之后,我们对nginx.conf进行修改(请求进来之后会去寻找item.lua)
item.lua文件内容
上面的item.lua文件中需要进行拼接数据,我们需要JSON结果处理
在实际生产中tomcat是肯定以集群的方式存在
当我们修改nginx.conf发送请求为集群的时候,如下图
这个时候存在一个问题,集群的负载均衡算法是轮询,会导致tomcat进程缓存产生浪费,举个例子
解决方法:更换负载均衡算法为 hash $request_uri
这种负载均衡算法是通过对id值进行hash运算然后进行对tomcat服务器数量取余来判断访问哪台tomcat服务器,这样就保证了同一个id访问同一个tomcat服务器
两个问题
缓存预热代码(逻辑代码根据自己的更换即可)
public class CaffeineConfig implements InitializingBean {
@Autowired
private StringRedisTemplate redisTemplate;
@Autowired
private IItemService itemService;
@Autowired
private IItemStockService itemStockService;
private static final ObjectMapper MAPPER = new ObjectMapper();
@Override
public void afterPropertiesSet() throws Exception {
// 初始化缓存
// 1.查询商品信息
List<Item> itemList = itemService.list();
// 2.放入缓存
for (Item item : itemList) {
// 2.1 item序列化为JSON
String json = MAPPER.writeValueAsString(item);
// 2.2 存入redis
redisTemplate.opsForValue().set("item:id:" + item.getId(),json);
}
// 3.查询商品库存信息
List<ItemStock> stockList = itemStockService.list();
// 2.放入缓存
for (ItemStock stock : stockList) {
// 2.1 item序列化为JSON
String json = MAPPER.writeValueAsString(stock);
// 2.2 存入redis
redisTemplate.opsForValue().set("item:stock:id:" + stock.getId(),json);
}
}
}
API简介
InitializingBean
ObjectMapper