如何仅在其余键中设计Redis搜索/扫描算法?
remaining keys = <All Keys> - <Set of Keys>
设计背景:我们的IOT JAVA Consumer应用程序在具有多个副本的kubernetes容器中运行。应用程序数量巨大(超过数百万),因此我们使用Redis哈希存储Appliance的元数据。例如Redis中的数据结构为
sample Hash - DEVICE|APC2(i.e. for 2nd series appliance)
sample Key - APC278ER89A1(i.e. Device_ID)
sample Value - Cooking|Claimed|Online(i.e. Device's metadata)
为了提高性能,我们在内存中的JVM缓存(即HashMap)也减少了Redis中的查找时间
[只要收到来自任何设备的任何消息,我们都会使用设备ID进行检查,如果内存中的jvm缓存中包含Appiance元数据,如果不是,那么我们将从redis提取它并将其放入内存缓存中,以供下一次引用。] >
对于内存缓存中的最大数据保存量(例如2000),存在可争议的值。如果达到最大数据驱逐线程将其从inMemory JVM缓存中删除。
问题:现在的问题是,每当我们需要查找具有特定设备ID且没有发现该特定设备ID的MemoryJVM缓存中存在的数据集时,我们就需要再次在Redis中扫描该哈希的所有数据(包括已经在Memory JVM缓存中扫描的数据)。
仅在那些没有扫描/存在于该容器的内存JVM缓存中的数据集中的Redis中进行扫描的选项有哪些?
如何仅在其余键中设计Redis搜索/扫描算法?其余键=
问题:现在的问题是每当我们需要在数据集中查找时 存在于具有特定设备ID的MemoryJVM缓存中,不是 找到然后我们需要再次扫描redis中的所有数据(包括 那些已经在内存JVM缓存中扫描过的哈希)。