我有一个IgniteCache<String, byte[]>
这个缓存中的值可以很小,一直到几百兆字节。
从我阅读的文档来看,缓存项的值没有硬性限制。这让人放心。
但是,对于我的用例,有什么问题需要我担心吗?
例如,我需要为这种情况专门设置什么配置设置?
我不建议使用大于几MB的条目。它可能会导致各种网络或内存问题。
如果必须,您需要尝试使用尽可能大的值,然后调整设置,直到效果良好。我可以考虑的一件事是,将TcpCommunicationSpi.ackSendThreshold
设置为一些小值,如4(默认值为32(,以避免这些大消息出现在队列中。但可能还有很多事情需要调整。
在内部,Ignite使用字节缓冲区来序列化数据,而这些缓冲区受到Integer.MAX_VALUE
的限制,因此2GiB是最大缓存项大小。
一些Ignite API批量处理数据,在处理大条目时减少批量/页面大小是个好主意:
Query.pageSize
(适用于扫描、SQL、连续查询(-默认值为1024IgniteDataStreamer.perNodeBufferSize
、perThreadBufferSize
-默认值为512和4096