我有一个新编写的系统(用C++编写的(,我希望至少在系统证明可靠之前要完成大量日志记录。我计划将数据库消息存储到 PostgreSQL 服务器,但为了提高效率,我想先在 Redis 中缓存,在那里我写到 Redis,然后如果消息超过一定大小,我会将它们转储到持久数据库,稍后可以在那里导航。
我读过关于 redis 的 LRU 缓存,它似乎很合适,但是 LRU 缓存似乎更倾向于读取数据而不是写入。换句话说,那里描述的场景听起来像是我想从持久数据库中读取某些内容,为了避免多次读取(访问(该持久数据库,我获取该值并将其写入 redis 缓存并重复使用它。但我想反其道而行之。我的日志记录系统会将日志消息写入 redis,然后我希望它们在预定义的架构中被"逐出"到 PostgreSQL。
有没有办法让我编写一个 Redis 插件来实现这一点?我似乎找不到任何关于这方面的文献或例子。
PS:请随时建议更好的日志缓存机制。
-
如果要
write efficiency
,我建议leveldb
或rocksdb
,两者都是Log-Structured-Merge-Database (LSM)
设计,既有出色的写入性能,也有很好的读取性能。Google Leveldb
Facebook Rocksdb
-
如果你想使用
redis
和postgres
,我认为你可以使用redis作为job-queue
。 将log-message
写入队列,并设置一些worker
以从队列中检索log-message
并写入postgres
。在这种情况下,您可以考虑: 芹菜
或者使用 redis
List
自己实现job-queue
:使用LPUSH
存储log-message
,LPOP
检索log-message
,然后将它们写入postgres
。