master
parent
c7a203441f
commit
ba01e230ef
|
@ -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);
|
||||||
|
|
|
@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue