代码之家  ›  专栏  ›  技术社区  ›  The Quantum Physicist

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

  •  0
  • The Quantum Physicist  · 技术社区  · 7 年前

    我有一个新写的系统(用C++编写),我期望大量的日志记录被完成,至少在开始时,直到系统被证明是可靠的。我计划将数据库消息存储到PostgreSQL服务器上,但是为了提高效率,我想先缓存在redis中,在redis中写入redis,然后如果消息超过某个大小,我将它们转储到持久数据库中,在那里以后可以导航。

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

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

    附言:请随时建议一个更好的日志缓存机制。

    1 回复  |  直到 7 年前
        1
  •  0
  •   gushitong    7 年前
    1. 如果你想的话 write efficiency 我建议 leveldb rocksdb ,两者都是 Log-Structured-Merge-Database (LSM) 设计,具有良好的写性能和读性能。

      Google Leveldb

      Facebook Rocksdb

    2. 如果你想用的话 redis postgres ,我想您可以使用redis作为 job-queue 圣尼 写下你的 log-message 到队列,并设置一些 worker 检索 日志消息 从队列中写入

      Celery

      List LPUSH LPOP