【问题标题】:How to implement an async ignite cache store?如何实现异步点燃缓存存储?
【发布时间】:2018-07-27 17:02:31
【问题描述】:

我正在尝试使用 Ignite.Net 实施 3rd Party Persistence。 我已经实现了一个 CacheStore ,其中我使用 Dapper 作为第 3 方 ORM 用于 Load()、Write()、Delete() 函数中的数据库交互。

我们可以使 Load(),Write(),Delete() 函数异步吗?或者我们有异步 CacheStoreAdapter 吗?

【问题讨论】:

    标签: ignite


    【解决方案1】:

    您可以在write-behind mode 中使用缓存存储。在这种模式下,更新被收集并通过缓存操作异步写入底层数据库。

    要启用它,您应该将 CacheConfiguration#writeBehindEnabled 配置属性设置为 true。

    【讨论】:

    • 您好丹尼斯,感谢您的回复。但在我的用例中,我使用异步函数,即 ICache 接口的 PutIfAbsentAsync、ReplaceAsync 和 TryGetAsync 函数来放置或从缓存中获取某些内容。为了启用 3rd 方持久性,我使用 CacheStoreAdapter 实现了缓存存储。那么有异步版本的 CacheStoreAdapter 吗?
    • 嗨 Mahesh,没有特殊的异步缓存存储,您只需要实现常规 CacheStoreAdapter,之后所有异步操作都将在特殊线程池中完成,不会阻塞您的代码。因此,相同的缓存存储可以很好地处理同步和异步操作。
    • 感谢迈克尔的回复。我正在使用 TryGetAsync 函数从缓存中获取某些内容。正如函数名称所说的“TryGetAsync”,它是一个异步操作。因此,我希望我的缓存存储实现是异步的。为此,我正在使用 dapper ORM。Dapper ORM 具有异步函数 QueryAsync() 和 ExecuteAsync() 与我打算使用的数据库。那么有什么方法可以实现吗?
    • 您不必使用异步 ORM 操作,因为您的缓存操作无论如何都是异步的。但是如果你真的想这样做,你必须在你的缓存存储实现中使用异步操作。但是没有简单的方法可以知道读/写/删除操作是否由异步缓存操作触发。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2017-11-17
    • 2017-07-03
    • 1970-01-01
    • 2017-10-15
    相关资源
    最近更新 更多