【发布时间】:2015-09-20 02:44:02
【问题描述】:
我想提高返回调整大小图像的函数的性能。请求的图像大小不应有很大差异(取决于设备),因此以某种方式缓存结果是有意义的。
我当然可以将它存储在磁盘上,并检查调整后的图像是否存在,并确保如果原始图像被删除,调整后的版本也......
或者,我可以使用记忆函数。但是由于结果可能非常大(我认为图像大约 5 - 10 MB),将它们存储在内存中是没有意义的(几十 GB 的图像及其修改版本会很快填满内存)。
那么,有没有办法让记忆函数像常规的 Clojure defmemo,但由本地磁盘中的文件夹而不是内存支持?然后我可以使用ttlstrategy 来确保图像不会长时间不同步。
类似于crache,但由文件系统支持?
【问题讨论】:
-
您可以将调整大小的图像存储在 Redis 或 Memcached 中并设置合理的过期时间,以自动清理未使用的记录。
-
刚刚查看了您的
crache链接,它看起来非常适合您的任务。 -
@LeonidBeschastny Well crache 由 Redis 支持,这是一个内存数据存储。不幸的是,我没有那么多 RAM,这就是为什么我试图避免这种情况并改用文件系统。
标签: caching clojure memoization