【问题标题】:Tuple as key in clojure.core.cacheclojure.core.cache 中作为键的元组
【发布时间】:2019-08-19 16:47:18
【问题描述】:

我目前正在尝试使用clojure.core.cache,现在我遇到的问题是我想根据键的元组存储值,但我不知道最好/最惯用的方法是什么。

我正在考虑为每个第一个键值存储一个缓存,在那里我可以使用第二个键值查找最终结果,但这对我来说似乎效率很低。

另一种方法是连接键,因为这也是唯一的,但这似乎有点 hackey。

也许问题对于缓存来说太“大”了,我应该使用 redis 或创建一个镜像数据库,但我想在一段时间后使这些值过期,所以这似乎也不是最优的。

基本上我有像(organization-id, user-id) 这样的键,我想为它们检索值并将结果存储在缓存中,并有一些到期时间。

【问题讨论】:

    标签: caching clojure


    【解决方案1】:

    为什么不对元组使用 Clojure 向量呢? Clojure 向量是不可变的值,只有当它们的长度相等时才相等,并且所有对应的元素彼此相等,并且可以用作映射中的键。我不记得 core.cache 是否在内部使用映射来表示缓存的内容,但不管它是否使用,它应该能够使用向量作为缓存键就好了。

    【讨论】:

    • 我现在使用字典,这也有效吗?
    • 如果字典中的意思是 Clojure 所谓的映射,那么是的,具有键和值的所有不可变值的 Clojure 映射本身是不可变的,并且两个这样的映射只有在它们具有相同的集合时才相等键,并且每个键在两个映射中具有相同的关联值。
    猜你喜欢
    • 2016-11-22
    • 2012-03-10
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 2019-03-28
    • 2017-03-04
    • 2021-04-02
    • 2020-09-25
    相关资源
    最近更新 更多