继承nutzrunner后,只要new MyRunner(“name”)里name一样就会线程同步,还是不管name是什么,所有new出来的MyRunner都会线程同步?
来自炫酷的 NutzCN
@wendal 每天定时任务是把昨天redis里的数据放到oracle里面这个我已经写好了,当天的数据据放在redis里面第二天由定时任务实现数据迁移,我问的线程,是每次用户来访问,开个带同步锁的线程,在不影响正常访问返回流程的前提下,去累加访问次数。而且我一开始就只是想知道,继承nutRunner的runner,什么时候同步,什么时候异步。能不能先把这个答案告诉我先
KeyWordRunner keyWordRunner =new KeyWordRunner("keyword");
keyword = keywordReply.getKeyword();
keyWordRunner.setKeyword(keyword);
keyWordRunner.setHitFlag(Constants.KEYWORD_FLAG_HIT);
//异步执行数据累加,不影响正常返回,因为要累加次数,所以要求线程必须有同步锁
keyWordRunner.run();
return keyWordService.getHitResponse(keywordReply);
合理的redis key设计,根本不会冲突
假设page都有id,例如nutzcn的topic id,设计其key为
topic:vp:aabbccddeeff:20170325
其中aabbccddeeff是id,末尾是日期,因为是按日统计.
每当访问一次,执行 jedis().incr(key)
过了0点,新的请求将使用新的key
incr是原子操作,而且非常快.
每日归档到数据库时,例如0点5分,取前一天的key对应的值,写入数据库.