如何在两个数据集选项(如DB)之间使用相似的减法来设计Redis搜索/扫描算法

问题描述 投票:0回答:1

如何仅在其余键中设计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搜索/扫描算法?其余键= -设计背景:我们的IOT JAVA Consumer应用程序正在运行中...

java caching redis spring-data-redis
1个回答
0
投票

问题:现在的问题是每当我们需要在数据集中查找时 存在于具有特定设备ID的MemoryJVM缓存中,不是 找到然后我们需要再次扫描redis中的所有数据(包括 那些已经在内存JVM缓存中扫描过的哈希)。

© www.soinside.com 2019 - 2024. All rights reserved.