我正在我的应用程序中做一些测试,看看内存缓存是否真的在工作。但是,由于 memory-cache 显然没有公开“命中”事件,我无法判断是否真的从缓存中获取数据。所以我试着看看当应用程序实际从数据库中获取一些数据时是否会触发 Mongoose 事件,但似乎又没有。我想知道是否有这样的事件?如果是的话,它是哪一个?我尝试使用这段代码。
mongoose.on("open", () => {
console.log("Open DB conn");
});
但只有在我最初连接到数据库时应用程序启动时才会被触发。
最佳答案
Mongoose 中没有评估或审计内存缓存的事件。您所指的事件与连接本身有关。 connecting
、connected
、open
和 close
等项就是此类事件的示例。您可以在 documentation 中查看完整的连接事件列表。 .
根据您是否指定了单独的存储引擎,mongodb 的默认值为 WiredTiger .
要确定您是否正在从 WiredTiger 访问缓存内存,您可以引用为 this 选择的答案。堆栈帖子,其中指出:
Any query will result in WiredTiger loading the document from disk into its part of memory (the so-called "cache") in an uncompressed form. Therefore all query replies are served from the "cache".
至于审计是否使用缓存内存的方法或函数,我一时想不起来。您可以弄清楚的一种方法是确定启用缓存与禁用/清除缓存时查询需要多长时间。删除缓存查询的一种方法是使用 db.collection.getPlanCache().clear()
。
如果启用缓存后查询时间更快,那么您就知道缓存正在工作。
https://stackoverflow.com/questions/58997252/
相关文章:
python - 使用 TorchScript 类作为 pytorch 模块中的成员
python - Jupyter Lab 交互图像展示 : issue with widgets a
git - Devops Azure 没有足够的钩子(Hook)权限(对于协作者)
node.js - Sequelize findAndCountAll 并计算包含的模型
react-native - 在 bazel 构建中运行 react-native cli
r - 代码相当于 RStudio 查看器 Pane 中的 'broom' 图标?
arrays - 当我在 PowerShell 中更改数组的值时,我不断收到 "Unable to