在我的项目中,计划使用Hazelcast缓存来提高性能,而不是每次都查询数据库表。在数据库表中可能有近100万条记录。该应用程序正在使用群集环境(最少4个节点)。
我可以将整个100万条记录加载到缓存中吗? 缓存中有100万条记录,检索数据时是否会出现性能问题? 可以存储在缓存中的理想记录数是多少?
答案 0 :(得分:0)
当然,您可以在Hazelcast地图中保留100万条记录,但请注意获取& put操作很昂贵,因为它们涉及内部的网络操作以分发数据。如果您尝试通过一组键或循环输入大量条目,这将很重要 建议对您的数据进行分区,使得您更少次点击集群映射 例如,如果有一个Employee表,并且您想要缓存所有员工数据。根据您的使用情况而定;获取操作,将整个表分成多个块。在这种情况下,将员工记录分为地理位置或位置明智或分配项目明智等。然后具有可以进入Hazelcast地图的唯一密钥,值可以是员工记录的集合/地图。通过这种方式,您将点击一次集群(并因此网络一次),然后处理本地JVM中的记录。
在你的情况下,如果你正在拉动&一次处理一个记录然后将所有记录推送到地图并对唯一键进行操作是有意义的。您可以使用后台操作来处理地图中记录的刷新。
此外,您可以使用NearCache在客户端本地保留副本,以便更快地访问。它是客户端配置的一部分,如果启用NearCache,第一个get操作将从集群映射中提取条目并将其保留在本地,以便后续操作与本地映射一样好。您可以设置条目类型的超时,以便它可以在一定时间后刷新群集中的条目。默认情况下,只要在“分布式映射”中更新相应的条目,该条目就会失效。