功能描述:秒杀商品统计浏览次数
步骤
- 添加浏览次数存redis,过期后统一添加
int sorts;
String redisKey = Constant.SECKILL_BROWSE_NUM+seckillId;
Object value = redisTemplate.boundValueOps(redisKey).get();
if (value == null) {
sorts = 1;
} else {
sorts = Integer.valueOf(value.toString()) + 1;
}
redisTemplate.boundValueOps(redisKey).set(sorts, detailVo.getSeckillDate(), TimeUnit.SECONDS);
2.添加RedisKeyExpireListener类,继承redis过期事件消息监听类
/**
* @program: shop
* @description: redis过期事件监听
* @author: bright
* @create: 2019-10-23 21:07
**/
@Component
public class RedisKeyExpireListener extends KeyExpirationEventMessageListener {
@Resource
private MarketingSeckillFeignApi marketingSeckillFeignApi;
public RedisKeyExpireListener(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
}
/**
* 针对redis数据失效事件,进行数据处理
* @param message
* @param pattern
*/
@Override
public void onMessage(Message message, byte[] pattern) {
// 做自己的业务处理即可,注意message.toString()可以获取失效的key
String expiredKey = message.toString();
String key = Constant.SECKILL_BROWSE_NUM;
if (expiredKey.startsWith(key)) {
String substring = expiredKey.substring(key.length());
//业务处理
marketingSeckillFeignApi.updateBrowseNum(Long.valueOf(substring));
}
}
}
注意事项:监听有可能需要修改redis.conf,查看redis.conf中是否有notify-keyspace-events Ex,有的话,就不用修改了,没有则添加,在window中,文件名是redis.windows.conf