jd-hotkey的部署参考另一篇博文:jd-hotkey探测热点key-优快云博客
jd-hotkey中主要有如下4个方法可供使用:
1.boolean isHotKey(String key) ,该方法会返回该key是否是热key,如果是返回true,如果不是返回false,并且会将key上报到探测集群进行数量计算。该方法通常用于判断只需要判断key是否热、不需要缓存value的场景,如刷子用户、接口访问频率等。
2.Object get(String key),该方法返回该key本地缓存的value值,可用于判断是热key后,再去获取本地缓存的value值,通常用于redis热key缓存
3.void smartSet(String key, Object value),方法给热key赋值value,如果是热key,该方法才会赋值,非热key,什么也不做
4.Object getValue(String key),该方法是一个整合方法,相当于isHotKey和get两个方法的整合,该方法直接返回本地缓存的value。 如果是热key,则存在两种情况,1是返回value,2是返回null。返回null是因为尚未给它set真正的value,返回非null说明已经调用过set方法了,本地缓存value有值了。 如果不是热key,则返回null,并且将key上报到探测集群进行数量探测。jd-hotkey
修改规则

测试代码
@GetMapping("/goods/info")
public Goods goodsInfo(Integer goodsId) {
String key = "goods_" + goodsId;
Goods goods = (Goods) JdHotKeyStore.getValue(key);
//如果已经缓存过了
if (goods != null) {
System.out.println("is hot key");
} else {
System.out.println("is not hot key");
// 从数据库或者redis中,查询指定id的商品信息
// 本例给出模拟数据
goods = new Goods();
goods.setId(goodsId);
goods.setName("手机");
goods.setPrice(new BigDecimal("100"));
JdHotKeyStore.smartSet(key, goods);
}
return goods;
}
测试


1120

被折叠的 条评论
为什么被折叠?



