gpt4 book ai didi

java - 为什么GAE内存缓存不断重置?

转载 作者:行者123 更新时间:2023-12-01 22:24:46 25 4
gpt4 key购买 nike

我使用内存缓存仅存储整数值以及使用字符串值创建的键。正如谷歌文档所说,我没有定义过期值来让这些值尽可能长时间地保留。但问题是最旧的元素最多在那里停留 4 小时。一般只有不到2小时。突然一切都归零了。这是代码:

Key mKey=null;
MemcacheService memcache = MemcacheServiceFactory.getMemcacheService();

try {
mKey=KeyFactory.createKey("device",deviceNo);
if (memcache.get(mKey)==null) {
Query query = mgr.createQuery("select d.insDate from TrialCheck d where d.DeviceId = :deviceNo");
resultList.addAll(query.setParameter("deviceNo", deviceNo).getResultList());
if (resultList.size()<1){
resultList.add(0);
} else {
for (Integer d:resultList) {
memcache.put(mKey, d);
}
}
} else {
Integer installDate = (Integer) memcache.get(mKey);
resultList.add(installDate);
}

我读到一些帖子说这是关于实例停机的问题,但我看不到实例和内存缓存重置之间有任何关联。这种行为对于共享内存缓存来说是正常的还是代码有问题?

最佳答案

共享内存缓存尽力提供缓存容量,并满足 App Engine 所服务的所有应用程序的总体需求。专用内存缓存提供专门分配给您的应用程序的固定缓存容量。

https://cloud.google.com/appengine/docs/adminconsole/memcache

此外,在您的代码中,您从缓存中获取该项目两次。您调用 memcache.get(mKey) 来检查它是否为 null。如果不为 null,则再次将其从缓存中取出并转换为 Integer。将第一个 memcache.get(mKey) 设置为稍后可以使用的变量,因为您可能会遇到缓存在第一次和第二次 get 之间过期的情况。

关于java - 为什么GAE内存缓存不断重置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29022902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com