首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R回忆录到具有不相同匹配条件的文件系统。

R回忆录到具有不相同匹配条件的文件系统。
EN

Stack Overflow用户
提问于 2017-10-02 17:45:29
回答 1查看 179关注 0票数 1

我想使用带有memoisecache_filesystem包来缓存长时间运行的函数,以便在一个闪亮的应用程序中使用。这几乎是完美的,问题是输入是一个列表对象,它包含一个(除其他外)一个数据库连接,这个连接将发生变化。我想忽略输入对象中的这个元素。

db连接将在每个会话之间进行更改,但我需要memoise只查看输入中的id元素,而不是列表中的其他元素。有什么办法我能做到吗?我看过...的论点,但这似乎只是进一步的限制,而不是放松。

简化示例如下:

代码语言:javascript
复制
localCache = cache_filesystem("memoiseCache/")
input1_1 = list(id = "id1", dbConn = 100)
input1_2 = list(id = "id1", dbConn = 101)

testFun=function(input) {
  print("Running the function")
  return(100)
}
library(memoise)
testFun.mem = memoise(testFun)

# This will run the function for the initial time - CORRECT
> testFun.mem(input1_1)
[1] "Running the function"
[1] 100

# This will now fetch the cached result - CORRECT
> testFun.mem(input1_1)
[1] 100

# I need this to ignore the dbConn element and instead fetch the cached result
> testFun.mem(input1_2)
[1] "Running the function"
[1] 100

编辑:我函数的输入实际上指向一个静态DB,所以缓存结果没有问题,静态DB是由id元素定义的,但是可以对同一个DB进行不同的连接。这些功能可以任意复杂。例如:

代码语言:javascript
复制
function(dbInputObj){
  <Many table joins and aggregations>
  <Some logic and conditions>
  <More table joins>
  return(result)
}
EN

回答 1

Stack Overflow用户

发布于 2017-10-18 15:12:18

您可以编写一个包装函数来隐藏差异。不过,我无法从简化的代码中看出您的应用程序是如何工作的。

您是否用不同的dbConn连接到同一个数据库?您是试图缓存数据库查询,还是在数据库查询之后进行某些计算?

如果dbConn可以不同,我不认为缓存数据库查询是个好主意。您应该从数据库获得更新的数据,而不是缓存数据。

如果您想在数据库查询后缓存计算,只需先获取值,然后只使用值而不是数据库连接来回溯计算函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46530856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档