public RedissonLongAdder(CommandAsyncExecutor connectionManager, String name, RedissonClient redisson) { super(connectionManager, name, redisson); atomicLong = redisson.getAtomicLong(getName()); }
@Override public Long resolve(Class value, RId id, String idFieldName, RedissonClient redisson) { return redisson.getAtomicLong(this.getClass().getCanonicalName() + "{" + value.getCanonicalName() + "}:" + idFieldName) .incrementAndGet(); }
@Override public Long resolve(Class value, RId id, String idFieldName, RedissonClient redisson) { return redisson.getAtomicLong(this.getClass().getCanonicalName() + "{" + value.getCanonicalName() + "}:" + idFieldName) .incrementAndGet(); }
public RedissonLongAdder(CommandAsyncExecutor connectionManager, String name, RedissonClient redisson) { super(connectionManager, name, redisson); atomicLong = redisson.getAtomicLong(getName()); }
@Override protected Counter createCount(String name) { return new RedissonCounter(redisson.getAtomicLong(name)); } }
/** * Get atomic long r atomic long. * * @param objectName the object name * @return the r atomic long */ public static RAtomicLong getAtomicLong(String objectName){ return redissonClient.getAtomicLong(objectName); }
@Override public Long resolve(Class value, RId id, String idFieldName, RedissonClient redisson) { return redisson.getAtomicLong(this.getClass().getCanonicalName() + "{" + value.getCanonicalName() + "}:" + idFieldName) .incrementAndGet(); }
public RedissonLongAdder(CommandAsyncExecutor connectionManager, String name, RedissonClient redisson) { super(connectionManager, name, redisson); atomicLong = redisson.getAtomicLong(getName()); }
@Override public void enter(String loggerId, String type) { // 运行中 ++ redissonClient.getAtomicLong(JobConfig.STAT_TOTAL_RUNNING).incrementAndGet(); redissonClient.getAtomicLong(String.format(JobConfig.STAT_TOTAL_TYPE, type)).incrementAndGet(); }
@Override public Long incr(String key) { return redissonClient.getAtomicLong(key).incrementAndGet(); }
/** * 回写补偿数据 * @param id * @param column * @param key * @param redissonClient * @param baseDao */ public static void writeCompensateCount(Long id, String column,String key, RedissonClient redissonClient,BaseDao baseDao) { RAtomicLong rCacheLong = redissonClient.getAtomicLong(key); if (retryCountToCache(id, column, key, 0, rCacheLong, redissonClient, baseDao)) { //回写DB加减1 //baseDao.updateCountValue(column, id); } }
@Override public void leave(String loggerId, String type, boolean success) { // 运行中 -- redissonClient.getAtomicLong(JobConfig.STAT_TOTAL_RUNNING).decrementAndGet(); // 每日统计 String date = DateTimeFormatter.ISO_LOCAL_DATE.format(ZonedDateTime.now()); String key; if (success) { key = String.format(JobConfig.STAT_DATE_TYPE_SUCCESS, date, type); } else { key = String.format(JobConfig.STAT_DATE_TYPE_FAIL, date, type); } redissonClient.getAtomicLong(key).incrementAndGet(); removeOldestLogger(loggerId); } }
public static Long readCount(Long id, String column, String key,RedissonClient redissonClient,BaseDao baseDao) { RAtomicLong rCacheLong = redissonClient.getAtomicLong(key); RAtomicLong rResultLong = getSourceToCacheOnce(id, column, key, rCacheLong, redissonClient, baseDao); if (Objects.isNull(rResultLong)) { return 0L; } return rResultLong.get(); }
/** * 读取count * @param id * @param cacheModelEnum * @return */ public Long readBizCount(Long id, CacheModelEnum cacheModelEnum) { String redisKey = String.format(cacheModelEnum.getRedisKey(), id); RAtomicLong rCacheLong = redissonClient.getAtomicLong(redisKey); RAtomicLong rResultLong = getSourceToCacheOnce(id, cacheModelEnum, rCacheLong); if (Objects.isNull(rResultLong)) { return 0L; } rCacheLong.expireAsync(AppConfig.COMMON_COUNT_CACHE_DAYS, TimeUnit.DAYS); return rResultLong.get(); }
public static Long writeCount(DefaultAsyncEventBus eventBus,Long id, String column,String key, RedissonClient redissonClient,BaseDao baseDao) { RAtomicLong rCacheLong = redissonClient.getAtomicLong(key); RAtomicLong rResultLong = getSourceToCacheOnce(id, column, key, rCacheLong, redissonClient, baseDao); if (Objects.isNull(rResultLong)) { //TODO 进入MQ模式 //mqProducter.send(message); return 0L; } long cacheCount = rResultLong.incrementAndGet(); //进入步长模式,调用Event CacheSyncEvent event = new CacheSyncEvent(); event.setCacheValue(cacheCount); eventBus.post(event); return cacheCount; }
private boolean checkStepCondition(CacheSyncEvent cacheSyncEvent, RAtomicLong rCacheLong) { // RAtomicLong rRanageAtomicLong = redissonClient.getAtomicLong(rCacheLong.getName() + "_range"); long ttl = rRanageAtomicLong.remainTimeToLive(); long value = rRanageAtomicLong.get(); if (ttl < AppConfig.COMMON_COUNT_RANGE_DAYS * 24 * 3600 * 1000 - AppConfig.CACHE_TIME_RANGE) { rRanageAtomicLong.expire(AppConfig.COMMON_COUNT_RANGE_DAYS, TimeUnit.DAYS); return true; } if (cacheSyncEvent.getCacheValue()-value >= AppConfig.CACHE_COUNT_RANGE) { rRanageAtomicLong.set(cacheSyncEvent.getCacheValue()); return true; } return false; //return true; }
/** * 异步队列写入count * 无需修改cache的值 * @param cacheSyncEvent */ public void writeStepCount(CacheSyncEvent cacheSyncEvent) { log.info("writeStepCount:{}", cacheSyncEvent); RAtomicLong rCacheLong = redissonClient.getAtomicLong(cacheSyncEvent.getCacheKey()); //获取步长是否满足补偿条件 if (checkStepCondition(cacheSyncEvent, rCacheLong)) { //封装 CacheModelEnum cacheModelEnum = CacheModelEnum.lookup(cacheSyncEvent.getIndex()); if (retryCountToCache(cacheSyncEvent.getId(), 0, cacheModelEnum, rCacheLong)) { //回写DB if (rCacheLong.get() > 0) { writeValue(rCacheLong.get(), cacheSyncEvent.getId(), cacheModelEnum); } } } rCacheLong.expire(AppConfig.COMMON_COUNT_CACHE_DAYS, TimeUnit.DAYS); }
@Override protected boolean shouldNotify(Event event) { JobInfo jobInfo = BeanStore.getBean(JobRepository.class).findJobInfoById(event.getData().getJobId()); if (jobInfo != null && Objects.equals(event.getType(), Event.TYPE.EXECUTE_SUCCESS.name()) && jobInfo.getChildJobIds() != null && jobInfo.getChildJobIds().length > 0) { JobSharding sharding = event.getData().getSharding(); if (sharding == null) { return true; } int count = (int) BeanStore.getBean(RedissonClient.class).getAtomicLong(String .format(JobConfig.EVENT_SHARDING, event.getData().getJobId(), event.getData().getLoggerId())).incrementAndGet(); return count == sharding.getTotal(); } return false; }
public static void main(String[] args) { // connects to 127.0.0.1:6379 by default RedissonClient redisson = Redisson.create(); RAtomicLong atomicLong = redisson.getAtomicLong("myLong"); atomicLong.getAndDecrement(); atomicLong.getAndIncrement(); atomicLong.addAndGet(10L); atomicLong.compareAndSet(29, 412); atomicLong.decrementAndGet(); atomicLong.incrementAndGet(); atomicLong.getAndAdd(302); atomicLong.getAndDecrement(); atomicLong.getAndIncrement(); redisson.shutdown(); }
/** * MQ异步写去count * 需要修改cache的值 * @param cacheSyncMessage */ public void writeMQCount(CacheSyncMessage cacheSyncMessage) { //封装 RAtomicLong rCacheLong = redissonClient.getAtomicLong(cacheSyncMessage.getCacheKey()); CacheModelEnum cacheModelEnum = CacheModelEnum.lookup(cacheSyncMessage.getIndex()); //同步redis+db if (retryCountToCache(cacheSyncMessage.getId(), 0, cacheModelEnum, rCacheLong)) { //修改redis数据 long value = cacheSyncMessage.isAdd()?rCacheLong.incrementAndGet():rCacheLong.decrementAndGet(); if (value > 0) { writeValue(value, cacheSyncMessage.getId(), cacheModelEnum); } } rCacheLong.expire(AppConfig.COMMON_COUNT_CACHE_DAYS, TimeUnit.DAYS); }