Skip to content

Commit

Permalink
feat(kv): remove redis cache (#285)
Browse files Browse the repository at this point in the history
  • Loading branch information
caojiajun committed Aug 12, 2024
1 parent acae4be commit 6a69d06
Show file tree
Hide file tree
Showing 60 changed files with 154 additions and 2,462 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -230,22 +230,22 @@ private Commanders initCommanders() {

CacheConfig cacheConfig = new CacheConfig(namespace, metaCacheEnable);

RedisTemplate cacheRedisTemplate = initRedisTemplate("kv.redis.cache");
RedisTemplate storeRedisTemplate = initRedisTemplate("kv.redis.store");
RedisTemplate redisTemplate = initRedisTemplate();

KeyMetaServer keyMetaServer = new DefaultKeyMetaServer(kvClient, storeRedisTemplate, keyDesign, gcExecutor, cacheConfig);
KeyMetaServer keyMetaServer = new DefaultKeyMetaServer(kvClient, keyDesign, gcExecutor, cacheConfig);

WriteBuffer<RedisHash> hashWriteBuffer = WriteBuffer.newWriteBuffer(namespace, "hash");
WriteBuffer<RedisZSet> zsetWriteBuffer = WriteBuffer.newWriteBuffer(namespace, "zset");
WriteBuffer<RedisSet> setWriteBuffer = WriteBuffer.newWriteBuffer(namespace, "set");

CommanderConfig commanderConfig = new CommanderConfig(kvClient, keyDesign, cacheConfig, kvConfig,
keyMetaServer, cacheRedisTemplate, storeRedisTemplate, gcExecutor, hashWriteBuffer, zsetWriteBuffer, setWriteBuffer);
keyMetaServer, redisTemplate, gcExecutor, hashWriteBuffer, zsetWriteBuffer, setWriteBuffer);

return new Commanders(commanderConfig);
}

private RedisTemplate initRedisTemplate(String key) {
private RedisTemplate initRedisTemplate() {
String key = "kv.redis.cache";
String type = RedisKvConf.getString(namespace, key + ".config.type", "local");
if (type.equalsIgnoreCase("local")) {
String url = RedisKvConf.getString(namespace, key + ".url", null);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,7 @@ public abstract class Commander {
protected final CacheConfig cacheConfig;
protected final KvConfig kvConfig;
protected final KeyMetaServer keyMetaServer;
protected final RedisTemplate cacheRedisTemplate;
protected final RedisTemplate storeRedisTemplate;
protected final RedisTemplate redisTemplate;
protected final KvGcExecutor gcExecutor;
protected final MpscSlotHashExecutor asyncWriteExecutor = KvExecutors.getInstance().getAsyncWriteExecutor();
protected final WriteBuffer<RedisHash> hashWriteBuffer;
Expand All @@ -47,8 +46,7 @@ public Commander(CommanderConfig commanderConfig) {
this.cacheConfig = commanderConfig.getCacheConfig();
this.kvConfig = commanderConfig.getKvConfig();
this.keyMetaServer = commanderConfig.getKeyMetaServer();
this.cacheRedisTemplate = commanderConfig.getCacheRedisTemplate();
this.storeRedisTemplate = commanderConfig.getStoreRedisTemplate();
this.redisTemplate = commanderConfig.getRedisTemplate();
this.gcExecutor = commanderConfig.getGcExecutor();
this.hashWriteBuffer = commanderConfig.getHashWriteBuffer();
this.zsetWriteBuffer = commanderConfig.getZsetWriteBuffer();
Expand All @@ -62,16 +60,16 @@ public Commander(CommanderConfig commanderConfig) {
protected abstract Reply execute(Command command);

protected final Reply sync(CompletableFuture<Reply> future) {
return cacheRedisTemplate.sync(future, cacheConfig.cacheTimeoutMillis());
return redisTemplate.sync(future, cacheConfig.cacheTimeoutMillis());
}

protected final List<Reply> sync(List<CompletableFuture<Reply>> futures) {
return cacheRedisTemplate.sync(futures, cacheConfig.cacheTimeoutMillis());
return redisTemplate.sync(futures, cacheConfig.cacheTimeoutMillis());
}

protected final Reply checkCache(byte[] script, byte[] cacheKey, byte[][] args) {
//cache
Reply reply = sync(cacheRedisTemplate.sendLua(script, new byte[][]{cacheKey}, args));
Reply reply = sync(redisTemplate.sendLua(script, new byte[][]{cacheKey}, args));
if (reply instanceof ErrorReply) {
return reply;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,24 +22,22 @@ public class CommanderConfig {
private final CacheConfig cacheConfig;
private final KvConfig kvConfig;
private final KeyMetaServer keyMetaServer;
private final RedisTemplate cacheRedisTemplate;
private final RedisTemplate storeRedisTemplate;
private final RedisTemplate redisTemplate;
private final KvGcExecutor gcExecutor;
private final WriteBuffer<RedisHash> hashWriteBuffer;
private final WriteBuffer<RedisZSet> zsetWriteBuffer;
private final WriteBuffer<RedisSet> setWriteBuffer;

public CommanderConfig(KVClient kvClient, KeyDesign keyDesign, CacheConfig cacheConfig,
KvConfig kvConfig, KeyMetaServer keyMetaServer,
RedisTemplate cacheRedisTemplate, RedisTemplate storeRedisTemplate, KvGcExecutor gcExecutor,
RedisTemplate redisTemplate, KvGcExecutor gcExecutor,
WriteBuffer<RedisHash> hashWriteBuffer, WriteBuffer<RedisZSet> zsetWriteBuffer, WriteBuffer<RedisSet> setWriteBuffer) {
this.kvClient = kvClient;
this.keyDesign = keyDesign;
this.cacheConfig = cacheConfig;
this.kvConfig = kvConfig;
this.keyMetaServer = keyMetaServer;
this.cacheRedisTemplate = cacheRedisTemplate;
this.storeRedisTemplate = storeRedisTemplate;
this.redisTemplate = redisTemplate;
this.gcExecutor = gcExecutor;
this.hashWriteBuffer = hashWriteBuffer;
this.zsetWriteBuffer = zsetWriteBuffer;
Expand All @@ -66,12 +64,8 @@ public KeyMetaServer getKeyMetaServer() {
return keyMetaServer;
}

public RedisTemplate getCacheRedisTemplate() {
return cacheRedisTemplate;
}

public RedisTemplate getStoreRedisTemplate() {
return storeRedisTemplate;
public RedisTemplate getRedisTemplate() {
return redisTemplate;
}

public KvGcExecutor getGcExecutor() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,23 +48,8 @@ protected Reply execute(Command command) {
KeyType keyType = keyMeta.getKeyType();
EncodeVersion encodeVersion = keyMeta.getEncodeVersion();
//redis
if (keyType == KeyType.zset) {
if (encodeVersion == EncodeVersion.version_1 || encodeVersion == EncodeVersion.version_2) {
cacheRedisTemplate.sendDel(cacheKey);
}
if (encodeVersion == EncodeVersion.version_3) {
storeRedisTemplate.sendDel(cacheKey);
}
}
if (keyType == KeyType.hash) {
if (encodeVersion == EncodeVersion.version_2 || encodeVersion == EncodeVersion.version_3) {
cacheRedisTemplate.sendDel(cacheKey);
}
}
if (keyType == KeyType.set) {
if (encodeVersion == EncodeVersion.version_2 || encodeVersion == EncodeVersion.version_3) {
cacheRedisTemplate.sendDel(cacheKey);
}
if (keyType == KeyType.zset && encodeVersion == EncodeVersion.version_1) {
redisTemplate.sendDel(cacheKey);
}
//local
if (keyType == KeyType.zset && cacheConfig.isZSetLocalCacheEnable()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,24 +72,9 @@ protected Reply execute(Command command) {
//
KeyType keyType = keyMeta.getKeyType();
EncodeVersion encodeVersion = keyMeta.getEncodeVersion();
if (keyType == KeyType.zset && encodeVersion == EncodeVersion.version_3) {
if (keyType == KeyType.zset && encodeVersion == EncodeVersion.version_1) {
byte[] cacheKey = keyDesign.cacheKey(keyMeta, key);
storeRedisTemplate.sendPExpire(cacheKey, expireTime - System.currentTimeMillis() + 1000L);
}
if (keyType == KeyType.zset && (encodeVersion == EncodeVersion.version_1 || encodeVersion == EncodeVersion.version_2)) {
byte[] cacheKey = keyDesign.cacheKey(keyMeta, key);
long pexpire = Math.min(expireTime - System.currentTimeMillis() + 1000L, cacheConfig.zsetRangeCacheMillis());
cacheRedisTemplate.sendPExpire(cacheKey, pexpire);
}
if (keyType == KeyType.hash && (encodeVersion == EncodeVersion.version_2 || encodeVersion == EncodeVersion.version_3)) {
byte[] cacheKey = keyDesign.cacheKey(keyMeta, key);
long pexpire = Math.min(expireTime - System.currentTimeMillis() + 1000L, cacheConfig.hgetallCacheMillis());
cacheRedisTemplate.sendPExpire(cacheKey, pexpire);
}
if (keyType == KeyType.set && (encodeVersion == EncodeVersion.version_2 || encodeVersion == EncodeVersion.version_3)) {
byte[] cacheKey = keyDesign.cacheKey(keyMeta, key);
long pexpire = Math.min(expireTime - System.currentTimeMillis() + 1000L, cacheConfig.hgetallCacheMillis());
cacheRedisTemplate.sendPExpire(cacheKey, pexpire);
redisTemplate.sendPExpire(cacheKey, expireTime - System.currentTimeMillis() + 1000L);
}
return IntegerReply.REPLY_1;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,24 +72,9 @@ protected Reply execute(Command command) {
//
KeyType keyType = keyMeta.getKeyType();
EncodeVersion encodeVersion = keyMeta.getEncodeVersion();
if (keyType == KeyType.zset && encodeVersion == EncodeVersion.version_3) {
if (keyType == KeyType.zset && encodeVersion == EncodeVersion.version_1) {
byte[] cacheKey = keyDesign.cacheKey(keyMeta, key);
storeRedisTemplate.sendPExpire(cacheKey, expireTime - System.currentTimeMillis() + 1000L);
}
if (keyType == KeyType.zset && (encodeVersion == EncodeVersion.version_1 || encodeVersion == EncodeVersion.version_2)) {
byte[] cacheKey = keyDesign.cacheKey(keyMeta, key);
long pexpire = Math.min(expireTime - System.currentTimeMillis() + 1000L, cacheConfig.zsetRangeCacheMillis());
cacheRedisTemplate.sendPExpire(cacheKey, pexpire);
}
if (keyType == KeyType.hash && (encodeVersion == EncodeVersion.version_2 || encodeVersion == EncodeVersion.version_3)) {
byte[] cacheKey = keyDesign.cacheKey(keyMeta, key);
long pexpire = Math.min(expireTime - System.currentTimeMillis() + 1000L, cacheConfig.hgetallCacheMillis());
cacheRedisTemplate.sendPExpire(cacheKey, pexpire);
}
if (keyType == KeyType.set && (encodeVersion == EncodeVersion.version_2 || encodeVersion == EncodeVersion.version_3)) {
byte[] cacheKey = keyDesign.cacheKey(keyMeta, key);
long pexpire = Math.min(expireTime - System.currentTimeMillis() + 1000L, cacheConfig.hgetallCacheMillis());
cacheRedisTemplate.sendPExpire(cacheKey, pexpire);
redisTemplate.sendPExpire(cacheKey, expireTime - System.currentTimeMillis() + 1000L);
}
return IntegerReply.REPLY_1;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,24 +71,9 @@ protected Reply execute(Command command) {
//
KeyType keyType = keyMeta.getKeyType();
EncodeVersion encodeVersion = keyMeta.getEncodeVersion();
if (keyType == KeyType.zset && encodeVersion == EncodeVersion.version_3) {
if (keyType == KeyType.zset && encodeVersion == EncodeVersion.version_1) {
byte[] cacheKey = keyDesign.cacheKey(keyMeta, key);
storeRedisTemplate.sendPExpire(cacheKey, expireTime - System.currentTimeMillis() + 1000L);
}
if (keyType == KeyType.zset && (encodeVersion == EncodeVersion.version_1 || encodeVersion == EncodeVersion.version_2)) {
byte[] cacheKey = keyDesign.cacheKey(keyMeta, key);
long pexpire = Math.min(expireTime - System.currentTimeMillis() + 1000L, cacheConfig.zsetRangeCacheMillis());
cacheRedisTemplate.sendPExpire(cacheKey, pexpire);
}
if (keyType == KeyType.hash && (encodeVersion == EncodeVersion.version_2 || encodeVersion == EncodeVersion.version_3)) {
byte[] cacheKey = keyDesign.cacheKey(keyMeta, key);
long pexpire = Math.min(expireTime - System.currentTimeMillis() + 1000L, cacheConfig.hgetallCacheMillis());
cacheRedisTemplate.sendPExpire(cacheKey, pexpire);
}
if (keyType == KeyType.set && (encodeVersion == EncodeVersion.version_2 || encodeVersion == EncodeVersion.version_3)) {
byte[] cacheKey = keyDesign.cacheKey(keyMeta, key);
long pexpire = Math.min(expireTime - System.currentTimeMillis() + 1000L, cacheConfig.hgetallCacheMillis());
cacheRedisTemplate.sendPExpire(cacheKey, pexpire);
redisTemplate.sendPExpire(cacheKey, expireTime - System.currentTimeMillis() + 1000L);
}
return IntegerReply.REPLY_1;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,24 +72,9 @@ protected Reply execute(Command command) {
//
KeyType keyType = keyMeta.getKeyType();
EncodeVersion encodeVersion = keyMeta.getEncodeVersion();
if (keyType == KeyType.zset && encodeVersion == EncodeVersion.version_3) {
if (keyType == KeyType.zset && encodeVersion == EncodeVersion.version_1) {
byte[] cacheKey = keyDesign.cacheKey(keyMeta, key);
storeRedisTemplate.sendPExpire(cacheKey, expireTime - System.currentTimeMillis() + 1000L);
}
if (keyType == KeyType.zset && (encodeVersion == EncodeVersion.version_1 || encodeVersion == EncodeVersion.version_2)) {
byte[] cacheKey = keyDesign.cacheKey(keyMeta, key);
long pexpire = Math.min(expireTime - System.currentTimeMillis() + 1000L, cacheConfig.zsetRangeCacheMillis());
cacheRedisTemplate.sendPExpire(cacheKey, pexpire);
}
if (keyType == KeyType.hash && (encodeVersion == EncodeVersion.version_2 || encodeVersion == EncodeVersion.version_3)) {
byte[] cacheKey = keyDesign.cacheKey(keyMeta, key);
long pexpire = Math.min(expireTime - System.currentTimeMillis() + 1000L, cacheConfig.hgetallCacheMillis());
cacheRedisTemplate.sendPExpire(cacheKey, pexpire);
}
if (keyType == KeyType.set && (encodeVersion == EncodeVersion.version_2 || encodeVersion == EncodeVersion.version_3)) {
byte[] cacheKey = keyDesign.cacheKey(keyMeta, key);
long pexpire = Math.min(expireTime - System.currentTimeMillis() + 1000L, cacheConfig.hgetallCacheMillis());
cacheRedisTemplate.sendPExpire(cacheKey, pexpire);
redisTemplate.sendPExpire(cacheKey, expireTime - System.currentTimeMillis() + 1000L);
}
return IntegerReply.REPLY_1;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,18 +45,9 @@ protected Reply execute(Command command) {

KeyType keyType = keyMeta.getKeyType();
EncodeVersion encodeVersion = keyMeta.getEncodeVersion();
if (keyType == KeyType.zset && (encodeVersion == EncodeVersion.version_1
|| encodeVersion == EncodeVersion.version_2 || encodeVersion == EncodeVersion.version_3)) {
if (keyType == KeyType.zset && (encodeVersion == EncodeVersion.version_1)) {
byte[] cacheKey = keyDesign.cacheKey(keyMeta, key);
storeRedisTemplate.sendDel(cacheKey);
}
if (keyType == KeyType.hash && (encodeVersion == EncodeVersion.version_2 || encodeVersion == EncodeVersion.version_3)) {
byte[] cacheKey = keyDesign.cacheKey(keyMeta, key);
cacheRedisTemplate.sendDel(cacheKey);
}
if (keyType == KeyType.set && (encodeVersion == EncodeVersion.version_2 || encodeVersion == EncodeVersion.version_3)) {
byte[] cacheKey = keyDesign.cacheKey(keyMeta, key);
cacheRedisTemplate.sendDel(cacheKey);
redisTemplate.sendDel(cacheKey);
}
}
return IntegerReply.parse(ret);
Expand Down
Loading

0 comments on commit 6a69d06

Please sign in to comment.