如果我们使用mongodb(nosql)或mysql(relational db)来检索对象,并且我们希望搜索特定的元素(where子句),但是我们已经有一个包含某些对象的内存列表(linkedlist、arraylist或其他任何原因)。
是否有一个公式/库可以“建议”何时使用内存结构进行检索而不是查询数据库更便宜?(例如,考虑到内存中列表的大小?)
最佳答案
查询内存缓存总是比较便宜。
唯一的例外是,如果您构建了缓存,以便搜索它非常低效(例如,线性搜索)。但只要它是一个基于散列的结构,它将做最坏的数据库需要做的事情,但没有网络开销。在哈希表中查找某些内容基本上是免费的。
更大的问题是,缓存是否使用了太多的内存,以至于应用程序的其余部分都无法使用。你需要一个弱散列映射或类似的,以避免这种情况。如果这是某种orm生成的缓存,那么它已经被弱引用了。