缓存Kotlin暴露了吗?

时间:2018-11-12 10:24:01

标签: kotlin-exposed

我想知道在使用Kotlin-Exposed库进行SQL访问时如何添加缓存。

为了进行实验,我已经使用Spring Boot + Hibernate和KTOR + Exposed编写了一个小型应用程序。

我做了一些负载测试,并且当发布到应用程序的两个版本时,其性能与具有边缘的KTOR + Exposed版本非常相似。

但是,当从两个版本中获取现有记录时,差异却令人震惊,特别是当数据库变得越来越大时-并且所有时间都在Postgres中。 我的结论是,区别仅在于Spring Boot配置的Hibernate二级缓存。

看到对于在多个事务/会话中重复查询的项目进行缓存的价值,我想知道如何将其配置到低级别的Exposed框架中?

1 个答案:

答案 0 :(得分:1)

目前,“已曝光”仅支持每个交易级别。

此外,还有ImmutableCachedEntityClass允许您定义一些实体(大多数类似于字典)作为缓存并在应用程序之间共享。 您必须使用expireCache()函数手动管理缓存失效,或者使用forceUpdateEntity实现实体。

在分布式系统时代,适当的缓存并不是那么容易实现。您可以使用任何缓存库(例如caffeine),如果知道数据何时更改(可以借助暴露的StatementInterceptor来使缓存无效)。

如果您能够实现良好的缓存解决方案,请随时将PR发送至项目。