内存存储非常简单

Very simple in memory storage

在将数据添加到 PostgreSQL 之前,我需要一些非常简单的存储来保存数据。目前,我有从客户端收集数据的网络应用程序。这个数据不是很重要。应用程序从一个客户端收集大约 50 kb 的数据(简单字符串)。它将每小时收集大约 2GB 数据。 这些数据不需要尽快,即使丢失也没什么。 有没有现成的方案先在内存中存一段时间(~1小时),然后全部写入PostgreSQL。我不需要以任何方式查询它。 我可能会使用 Redis,但是 Redis 对于这个任务来说太复杂了。 我可以自己写一些东西,但是这个工具必须处理许多存储数据的请求(可能每秒大约 100 个)并且现有的解决方案可能更好。

谢谢, 德米特里

如果您不打算操作此数据,那么为什么要将其存储在内存中?您可以创建 UNLOGGED table 并将数据存储在此 table 中。

查看documentation了解详情:

UNLOGGED

If specified, the table is created as an unlogged table. Data written to unlogged tables is not written to the write-ahead log, which makes them considerably faster than ordinary tables. However, they are not crash-safe: an unlogged table is automatically truncated after a crash or unclean shutdown. The contents of an unlogged table are also not replicated to standby servers. Any indexes created on an unlogged table are automatically unlogged as well; however, unlogged GiST indexes are currently not supported and cannot be created on an unlogged table.

在我看来,将数据存储在内存中就像缓存一样。所以,如果你正在使用Java,我会向你推荐Guava Cache

它似乎符合您的所有要求,例如设置过期延迟,处理从缓存中逐出的数据:

    private Cache<String, Object> yourCache = CacheBuilder.newBuilder()
        .expireAfterWrite(2, TimeUnit.HOURS)
        .removalListener(notification -> {
            // store object in DB
        })
        .build();