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

View File

@ -1,10 +1,58 @@
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
*
* @author DeKangLiu
* 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();
}
}