直接插到数据库肯定不行,效率太低。
把数据放到缓存,隔一段时间以后同步缓存数据到数据库怎么样?
使用Redis的自增计数,设定一个阈值,每当计数整数倍于阈值时,写入数据库
long views = incr article:#articleId:views
long limit = 10
if views > 0 && views % limit == 0 then
// 入库
end
redis即可, 定期同步数据库(如果需要的话) 按时间比较方便。
可以考虑 Jedis 的方法:
public Set<String> keys(final String pattern) {
checkIsInMultiOrPipeline();
client.keys(pattern);
return BuilderFactory.STRING_SET.build(client.getBinaryMultiBulkReply());
}
15 回答8.4k 阅读
8 回答6.2k 阅读
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
2 回答2.8k 阅读✓ 已解决
1.并行
2.异步
3.选择写入性能更好的中间件( redis,mongo)
中间缓存更新策略:write through , write back 具体看业务场景,对于数据实时性,数据完整性的要求