date: 2025-03-24 14:14:23 title: Liquibase实现数据库表自动初始化 author: zaqai tags:
- Java
- 数据库
incr
Redis原生的incr指令可以实现原子的+1/-1, 不仅redis的string支持incr,hash、zset 数据类型同样也支持incr 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。
用户计数统计
为了实现解耦和优雅, 使用消息机制, 点赞关注等操作只关注业务操作, 同时发布对应的消息即可, 消息监听者收到消息执行相应的操作, 如记录用户行为, 加活跃分, 行为计数等, 消息机制参考[[Spring事件监听机制及原理(观察者模式)]]
@EventListener(classes = NotifyMsgEvent.class)
@Async
public void notifyMsgListener(NotifyMsgEvent msgEvent) {
switch (msgEvent.getNotifyType()) {
case COMMENT:
case REPLY:
CommentDO comment = (CommentDO) msgEvent.getContent();
RedisClient.hIncr(CountConstants.ARTICLE_STATISTIC_INFO + comment.getArticleId(), CountConstants.COMMENT_COUNT, 1);
break;
数据一致性
设置定时同步任务来保证缓存与实际数据中的一致性
/**
* 每天4:15分执行定时任务,全量刷新用户的统计信息
*/
@Scheduled(cron = "0 15 4 * * ?")
public void autoRefreshAllUserStatisticInfo() {...}
回复