C++ 使用redis进行日志缓存:是否可以创建逐出到PostgreSQL的逐出策略?
我有一个新编写的系统(用C++编写),我希望在这个系统中可以进行大量的日志记录,至少在系统被证明可靠之前是这样。我计划将数据库消息存储到PostgreSQL服务器,但为了提高效率,我想先缓存在Redis中,在那里我向Redis写入数据,然后如果消息超过某个大小,我会将它们转储到持久性数据库中,以后可以在那里进行导航 我喜欢redis,它似乎很合适,但LRU缓存似乎更倾向于读取数据而不是写入数据。换句话说,这里描述的场景听起来像是我想从一个持久性数据库中读取一些内容,为了避免多次读取(访问)该持久性数据库,我获取该值并将其写入redis缓存并重复使用。但我想做相反的事。我的日志系统将把日志消息写入redis,然后我希望它们以预定义的模式“逐出”到PostgreSQL 我有没有办法写一个Redis插件来实现这一点?我似乎找不到任何关于这方面的文献或例子 PS:请随意建议一种更好的日志缓存机制C++ 使用redis进行日志缓存:是否可以创建逐出到PostgreSQL的逐出策略?,c++,postgresql,caching,logging,redis,C++,Postgresql,Caching,Logging,Redis,我有一个新编写的系统(用C++编写),我希望在这个系统中可以进行大量的日志记录,至少在系统被证明可靠之前是这样。我计划将数据库消息存储到PostgreSQL服务器,但为了提高效率,我想先缓存在Redis中,在那里我向Redis写入数据,然后如果消息超过某个大小,我会将它们转储到持久性数据库中,以后可以在那里进行导航 我喜欢redis,它似乎很合适,但LRU缓存似乎更倾向于读取数据而不是写入数据。换句话说,这里描述的场景听起来像是我想从一个持久性数据库中读取一些内容,为了避免多次读取(访问)该持久
写效率
,我建议leveldb
或rocksdb
,两者都是日志结构合并数据库(LSM)
设计,具有优异的写性能和读性能
redis
和postgres
,我想您可以将redis用作作业队列
将log message
写入队列,并设置一些worker
从队列中检索log message
,然后写入postgres
在这种情况下,您可以考虑:
或者使用redis列表实现作业队列
:使用LPUSH
存储日志消息
和LPOP
检索日志消息
,然后将它们写入postgres
我推测在postgres中使用LRU是不可能的,甚至连一个插件都不可能。。。谢谢你的信息。如果没有更好的答案出现,我会接受这个。