内存缓存和数据库之间的选择,任何其他内存选项php


choice between in-memory cache and database, any other in-memory options php

我必须查找大约160K条记录,其中in数据的形式为id,我们需要获取给定值在range1和range2范围内的行,到目前为止,我们使用的是一个介于两者之间的查询。

我昨天开始使用memcache,它会发现memcache中是否有针对给定值的特定行,如果没有,它会通过从数据库中获取该行来将其放入memcache。

我不确定在memcache中查找的顺序是什么,是o(1)还是o(n),我知道dbsearch最多只能给我o(logn),并且我正在考虑在其他内存中对象之间保留另一层[我现在想不出来,但我当然不想使用会话来将表保留在内存中],而是从这个内存中对象中获取数据,如果在其中找不到,然后转到数据库。

PS-我的数据库表几乎没有任何变化。

所以我想的顺序是在memcache中查找如果找不到(在内存中查找-对数组进行二进制搜索),并添加到memcache如果在数据库中找不到查找,请在内存中添加到并添加到memcache。

我的想法正确吗

Memcached非常快,查找是o(1),而不是o(n),所以最好只使用Memcached和一些后端数据库。考虑一下您上面提出的场景。中间有一个比memcached慢的二级缓存只会增加请求的延迟,因为您现在可能需要为一些数据请求3个位置,而不是两个位置。此外,由于memcached将比内存中数据库解决方案更快,因此最好将所有额外内存都提供给memcached。另一件需要考虑的事情是为应用程序添加额外层的管理开销。