C++ 使用redis进行日志缓存:是否可以创建逐出到PostgreSQL的逐出策略?

C++ 使用redis进行日志缓存:是否可以创建逐出到PostgreSQL的逐出策略?,c++,postgresql,caching,logging,redis,C++,Postgresql,Caching,Logging,Redis,我有一个新编写的系统(用C++编写),我希望在这个系统中可以进行大量的日志记录,至少在系统被证明可靠之前是这样。我计划将数据库消息存储到PostgreSQL服务器,但为了提高效率,我想先缓存在Redis中,在那里我向Redis写入数据,然后如果消息超过某个大小,我会将它们转储到持久性数据库中,以后可以在那里进行导航 我喜欢redis,它似乎很合适,但LRU缓存似乎更倾向于读取数据而不是写入数据。换句话说,这里描述的场景听起来像是我想从一个持久性数据库中读取一些内容,为了避免多次读取(访问)该持久

我有一个新编写的系统(用C++编写),我希望在这个系统中可以进行大量的日志记录,至少在系统被证明可靠之前是这样。我计划将数据库消息存储到PostgreSQL服务器,但为了提高效率,我想先缓存在Redis中,在那里我向Redis写入数据,然后如果消息超过某个大小,我会将它们转储到持久性数据库中,以后可以在那里进行导航

我喜欢redis,它似乎很合适,但LRU缓存似乎更倾向于读取数据而不是写入数据。换句话说,这里描述的场景听起来像是我想从一个持久性数据库中读取一些内容,为了避免多次读取(访问)该持久性数据库,我获取该值并将其写入redis缓存并重复使用。但我想做相反的事。我的日志系统将把日志消息写入redis,然后我希望它们以预定义的模式“逐出”到PostgreSQL

我有没有办法写一个Redis插件来实现这一点?我似乎找不到任何关于这方面的文献或例子

PS:请随意建议一种更好的日志缓存机制

  • 如果您想要
    写效率
    ,我建议
    leveldb
    rocksdb
    ,两者都是
    日志结构合并数据库(LSM)
    设计,具有优异的写性能和读性能

  • 如果您想使用
    redis
    postgres
    ,我想您可以将redis用作
    作业队列
    log message
    写入队列,并设置一些
    worker
    从队列中检索
    log message
    ,然后写入
    postgres

    在这种情况下,您可以考虑:

    或者使用redis
    列表实现
    作业队列
    :使用
    LPUSH
    存储
    日志消息
    LPOP
    检索
    日志消息
    ,然后将它们写入
    postgres


  • 我推测在postgres中使用LRU是不可能的,甚至连一个插件都不可能。。。谢谢你的信息。如果没有更好的答案出现,我会接受这个。