gpt4 book ai didi

java - 为单个键缓存多个字节数组

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

我必须缓存大字节数组。大多数时候,字节数组的大小超过底层缓存服务可接受的最大大小。例如,Memcache 只接受最大 1MB 的对象。
因此,我提出的方法是将大字节数组拆分为小尺寸数组并单独缓存。此外,当请求特定键时,应检索所有缓存的字节数组。我在php中找到了一些方法。但对于java实现来说没有。有人用 Java 做这样的事情吗?请截取任何资源代码。

最佳答案

您是否考虑过将数组拆分为较小的部分并将每个部分缓存在专用 key 下?当您想要获取数组时,只需将每个部分合并到单个数组中即可。

放入缓存:

String cacheKey = ...;
int maxItems = 10000;
int totalCount = myObjects.length;
MyObject [] myObjects = ...;
for (int i = 0; i < (totalCount / maxItems) + 1; i++) {
int endIndex = totalCount > (maxItems * (i + 1)) ? maxItems * (i + 1) : totalCount;
MyObject [] part = Arrays.copyOfRange(myObjects, i * maxItems, endIndex);
cache.put(cacheKey + i, part);
}

从缓存中获取:

String cacheKey = ..'
int partNr = 0;
MyObject [] part;
MyObject [] myObjects = new MyObject[0];
do {
part = cache.get(cacheKey + partNr);
partNr++;
// from guava
if (part != null) {
ObjectArrays.concat(myObjects, part, MyObject.class);
}
} while (part != null && part.length > 0)

可以使用 multiget 一次性获取所有部分并使用 multiset 将所有部分一次性放入缓存中进行优化。

关于java - 为单个键缓存多个字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24332598/

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