增加Cached.name属性

This commit is contained in:
redkale
2024-09-11 11:17:39 +08:00
parent 61586beb45
commit 2b18310050
14 changed files with 349 additions and 195 deletions

View File

@@ -27,56 +27,57 @@ public class CachedInstance implements Service {
// 修改远程缓存的key值
public void updateName(String code, Map<String, Long> map) {
cachedManager.remoteSetString(code + "_" + map.get("id"), code + "-" + map, Duration.ofMillis(60));
cachedManager.remoteSetString("name", code + "_" + map.get("id"), code + "-" + map, Duration.ofMillis(60));
}
@Cached(key = "#{code}_#{map.id}", remoteExpire = "60", timeUnit = TimeUnit.MILLISECONDS)
@Cached(name = "code", key = "#{code}_#{map.id}", remoteExpire = "60", timeUnit = TimeUnit.MILLISECONDS)
public String getName(String code, Map<String, Long> map) {
return code + "-" + map;
}
@Cached(key = "name", localExpire = "30")
@Cached(name = "name", key = "name", localExpire = "30")
public String getName() {
return "haha";
}
public void updateName(String val) {
cachedManager.bothSet("name_2", String.class, val, Duration.ofSeconds(31), Duration.ofSeconds(60));
public void updateName2(String val) {
cachedManager.bothSet("name2", "name_2", String.class, val, Duration.ofSeconds(31), Duration.ofSeconds(60));
}
@Cached(key = "name_2", localExpire = "31", remoteExpire = "60")
@Cached(name = "name2", key = "name_2", localExpire = "31", remoteExpire = "60")
public String getName2() throws RedkaleException {
return "haha";
}
@Cached(key = "dictcode", localExpire = "30", remoteExpire = "60")
@Cached(name = "dictcode", key = "dictcode", localExpire = "30", remoteExpire = "60")
public CompletableFuture<String> getDictcodeAsync() {
System.out.println("执行了 getDictcodeAsync");
return CompletableFuture.completedFuture("code001");
}
@Cached(key = "name", localExpire = "30")
@Cached(name = "name", key = "name", localExpire = "30")
public CompletableFuture<String> getNameAsync() {
return CompletableFuture.completedFuture("nameAsync");
}
@Cached(key = "name", localExpire = "30", remoteExpire = "60")
@Cached(name = "name", key = "name", localExpire = "30", remoteExpire = "60")
public CompletableFuture<String> getName2Async() throws IOException, InstantiationException {
return CompletableFuture.completedFuture("name2Async");
}
@Cached(key = "info_#{id}_file#{files.one}", localExpire = "30", remoteExpire = "60")
@Cached(name = "info", key = "#{id}_#{files.one}", localExpire = "30", remoteExpire = "60")
public File getInfo(ParamBean bean, int id, List<String> idList, Map<String, File> files) {
return new File("aa.txt");
}
@Cached(key = "info_#{id}_file#{files.one}", localExpire = "30", remoteExpire = "60")
@Cached(name = "info", key = "#{id}_#{files.one}", localExpire = "30", remoteExpire = "60")
public CompletableFuture<File> getInfoAsync(ParamBean bean, int id, List<String> idList, Map<String, File> files) {
return CompletableFuture.completedFuture(new File("aa.txt"));
}
@Cached(
key = "info_#{id}_file#{files.one}",
name = "info",
key = "#{id}_#{files.one}",
localExpire = "30",
remoteExpire = "60",
timeUnit = TimeUnit.MILLISECONDS)

View File

@@ -83,12 +83,12 @@ public class CachedInstanceTest {
System.out.println("instance1.manager = " + instance.getCachedManager());
System.out.println("instance2.manager = " + instance2.getCachedManager());
manager.updateBroadcastable(false);
instance.updateName("gege");
instance.updateName2("gege");
Assertions.assertEquals("gege", instance.getName2());
Assertions.assertEquals("haha", instance2.getName2());
manager.updateBroadcastable(true);
System.out.println("准备设置 updateName");
instance.updateName("gege");
instance.updateName2("gege");
System.out.println("设置结束 updateName");
Utility.sleep(10);
Assertions.assertEquals("gege", instance.getName2());

View File

@@ -37,22 +37,22 @@ public class CachedManagerTest {
@Test
public void run1() throws Exception {
Duration expire = Duration.ofMillis(290);
manager.localSetString("cached-schema:name:haha", "myha", expire);
Assertions.assertEquals(manager.localGetString("cached-schema:name:haha"), "myha");
manager.localSetString("name", "haha", "myha", expire);
Assertions.assertEquals(manager.localGetString("name", "haha"), "myha");
Utility.sleep(300);
Assertions.assertTrue(manager.localGetString("cached-schema:name:haha") == null);
Assertions.assertTrue(manager.localGetString("name", "haha") == null);
CachingBean bean = new CachingBean();
bean.setName("tom");
bean.setRemark("这是名字备注");
String json = bean.toString();
manager.localSet(bean.getName(), CachingBean.class, bean, expire);
manager.localSet("name", bean.getName(), CachingBean.class, bean, expire);
Assertions.assertEquals(
manager.localGet(bean.getName(), CachingBean.class).toString(), json);
manager.localGet("name", bean.getName(), CachingBean.class).toString(), json);
bean.setRemark(bean.getRemark() + "-新备注");
Assertions.assertEquals(
manager.localGet(bean.getName(), CachingBean.class).toString(), json);
manager.localGet("name", bean.getName(), CachingBean.class).toString(), json);
}
@Test
@@ -67,7 +67,13 @@ public class CachedManagerTest {
for (int i = 0; i < count; i++) {
new Thread(() -> {
manager.bothGetSet(
"name", String.class, false, localExpire, remoteExpire, () -> bean.getName());
"name",
"name",
String.class,
false,
localExpire,
remoteExpire,
() -> bean.getName());
cdl.countDown();
})
.start();
@@ -76,7 +82,7 @@ public class CachedManagerTest {
}
Assertions.assertEquals(1, ParallelBean.c1.get());
Utility.sleep(200);
manager.bothGetSet("name", String.class, false, localExpire, remoteExpire, () -> bean.getName());
manager.bothGetSet("name", "name", String.class, false, localExpire, remoteExpire, () -> bean.getName());
Assertions.assertEquals(1, ParallelBean.c1.get());
Utility.sleep(300);
{
@@ -84,7 +90,13 @@ public class CachedManagerTest {
for (int i = 0; i < count; i++) {
new Thread(() -> {
manager.bothGetSet(
"name", String.class, false, localExpire, remoteExpire, () -> bean.getName());
"name",
"name",
String.class,
false,
localExpire,
remoteExpire,
() -> bean.getName());
cdl.countDown();
})
.start();

View File

@@ -46,6 +46,7 @@ public class _DynLocalCacheInstance extends CachedInstance {
@DynForCached(
dynField = "_redkale_getNameCachedAction1",
manager = "",
name = "name",
key = "name",
nullable = false,
timeUnit = TimeUnit.SECONDS,
@@ -63,7 +64,8 @@ public class _DynLocalCacheInstance extends CachedInstance {
@DynForCached(
dynField = "_redkale_getInfoCachedAction2",
manager = "",
key = "info_#{id}_file#{files.one}",
name = "info",
key = "#{id}_#{files.one}",
nullable = false,
timeUnit = TimeUnit.SECONDS,
remoteExpire = "60",
@@ -81,6 +83,7 @@ public class _DynLocalCacheInstance extends CachedInstance {
@DynForCached(
dynField = "_redkale_getNameAsyncCachedAction3",
manager = "",
name = "name",
key = "name",
nullable = false,
timeUnit = TimeUnit.SECONDS,
@@ -98,7 +101,8 @@ public class _DynLocalCacheInstance extends CachedInstance {
@DynForCached(
dynField = "_redkale_getInfo2AsyncCachedAction4",
manager = "",
key = "info_#{id}_file#{files.one}",
name = "info",
key = "#{id}_#{files.one}",
nullable = false,
timeUnit = TimeUnit.SECONDS,
remoteExpire = "60",
@@ -120,6 +124,7 @@ public class _DynLocalCacheInstance extends CachedInstance {
@DynForCached(
dynField = "_redkale_getName2AsyncCachedAction5",
manager = "",
name = "name",
key = "name",
nullable = false,
timeUnit = TimeUnit.SECONDS,
@@ -137,7 +142,8 @@ public class _DynLocalCacheInstance extends CachedInstance {
@DynForCached(
dynField = "_redkale_getInfoAsyncCachedAction6",
manager = "",
key = "info_#{id}_file#{files.one}",
name = "info",
key = "#{id}_#{files.one}",
nullable = false,
timeUnit = TimeUnit.SECONDS,
remoteExpire = "60",
@@ -156,6 +162,7 @@ public class _DynLocalCacheInstance extends CachedInstance {
@DynForCached(
dynField = "_redkale_getName2CachedAction7",
manager = "",
name = "name",
key = "name",
nullable = false,
timeUnit = TimeUnit.SECONDS,