master
baize 2024-04-02 16:48:25 +08:00
parent c7a203441f
commit ba01e230ef
2 changed files with 76 additions and 18 deletions

View File

@ -21,7 +21,7 @@ public abstract class AtomicSequenceCacheAbs<K> implements AtomicSequenceCache<K
* @return * @return
*/ */
@Override @Override
public Long get(K key) { public Long get (K key) {
return this.redisService.getCacheObject(encode(key)); return this.redisService.getCacheObject(encode(key));
} }
@ -30,54 +30,64 @@ public abstract class AtomicSequenceCacheAbs<K> implements AtomicSequenceCache<K
* @param key * @param key
*/ */
@Override @Override
public Long increment(K key) { public Long increment (K key) {
return this.increment(key,1L); return this.increment(key, 1L);
} }
/** /**
*
* *
* @param key
*/ */
@Override @Override
public Long decrement(K key) { public Long decrement (K key) {
return this.decrement(key,1L); return this.decrement(key, 1L);
} }
/** /**
* *
*
* @param key * @param key
* @param number * @param number
*/ */
@Override @Override
public Long increment(K key, Long number) { public Long increment (K key, Long number) {
Long numberValue = redisService.getCacheObject(encode(key)); Long numberValue = redisService.getCacheObject(encode(key));
if (numberValue==null){ if (numberValue == null){
Long data = getData(key); Long data = getData(key);
data=data==null?0L:data; data = data == null ? 0L : data;
redisService.setCacheObject(encode(key), data); redisService.setCacheObject(encode(key), data);
} }
return redisService.increment(encode(key),number); return redisService.increment(encode(key), number);
} }
/**
*
*
* @param key
* @param number
*/
@Override @Override
public Long decrement(K key, Long number) { public Long decrement (K key, Long number) {
Long numberValue = redisService.getCacheObject(encode(key)); Long numberValue = redisService.getCacheObject(encode(key));
if (numberValue==null){ if (numberValue == null){
Long data = getData(key); Long data = getData(key);
data=data==null?0L:data; data = data == null ? 0L : data;
redisService.setCacheObject(encode(key),data); redisService.setCacheObject(encode(key), data);
} }
return redisService.decrement(encode(key),number); return redisService.decrement(encode(key), number);
} }
/** /**
* *
*
* @param key ID * @param key ID
*
* @return * @return
*/ */
@Override @Override
public String encode(K key) { public String encode (K key) {
return keyPre()+key; return keyPre() + key;
} }
public abstract Long getData(K key); public abstract Long getData(K key);

View File

@ -1,10 +1,58 @@
package com.muyu.product.cache; package com.muyu.product.cache;
import com.muyu.cache.abs.AtomicSequenceCacheAbs;
import com.muyu.common.core.text.Convert;
import com.muyu.product.cache.datasource.ProjectSkuStockData;
import com.muyu.product.cache.key.SkuStockKey;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/** /**
* ProjectSkuStockCache * ProjectSkuStockCache
* *
* @author DeKangLiu * @author DeKangLiu
* on 2024/4/1 * on 2024/4/1
*/ */
public class ProjectSkuStockCache { @Service
public class ProjectSkuStockCache extends AtomicSequenceCacheAbs<SkuStockKey>{
@Autowired
private ProjectSkuStockData projectSkuStockData;
/**
* key
* @return key
*/
@Override
public String keyPre() {
return "project:sku:stock:";
}
/**
*
* @param skuStockKey ID
* @return
*/
@Override
public String encode(SkuStockKey skuStockKey){
return keyPre()+skuStockKey.getProjectId()+":"+skuStockKey.getSku();
}
@Override
public Long getData(SkuStockKey key) {
return projectSkuStockData.getData(key);
}
/**
*
* @param redisKey
* @return ID
*/
@Override
public SkuStockKey decode(String redisKey) {
String[] split = redisKey.replace(keyPre(), "").split(":");
return SkuStockKey.builder()
.projectId(Convert.toLong(split[0]))
.sku(split[1])
.build();
}
} }