我有一些数据存储在数据库(MongoDB)和分布式缓存redis中。
在查询存储库时,我正在使用延迟加载方法,如果它可用,首先在缓存中查找数据,如果没有在数据库中找到它并更新缓存,那么下次需要时它应该可以在缓存中找到。
使用的样本模型:
Person ( id, name, age, address (Reference))
Address (id, place)
PersonCacheModel extends Person with addressId.
我没有将父对象与子对象一起存储在缓存中,这就是我用addressId
创建personCacheModel的原因,并将此对象存储在缓存中,同时获取数据personCacheModel转换为person并进行调用将回购地址发送到addressCache
以填写人物对象的地址详细信息。
据我所知:
personRepository.findPersonByName(NAME + randomNumber);
从缓存访问数据=网络时间+缓存访问时间+反序列化时间
从数据库访问数据=网络时间+数据库查询时间+对象映射时间
当我在1000行以上的方法上运行时,从数据库访问数据比从缓存访问数据更快。我相信缓存访问时间必须小于访问MongoDB。
请告知我方法是否存在问题,或者这是预期的情况。
答案 0 :(得分:0)
要有一个有效的基准,我们需要考虑硬件方面和数据处理方面:
硬件 - 我们是否有相同的配置,内存,CPU数量,操作系统......等等
进程 - 数据的转换方式(单线程,多线程,每个对象,每个请求)
对您的数据集执行负载测试可以很好地概述特定用例场景中哪个进程更快。
很难判断 - 只要我们知道上面提到的要点,它应该是什么。 另一件事是有一个以上的测试场景,让它强调让我们说10秒时间,分钟,5小时...所以你可以有数字,告诉你真相。