使用 redis 进行日志缓存:是否可以创建逐出到 PostgreSQL 的逐出策略?
Use redis for log caching: Is it possible to create an eviction policy that evicts to PostgreSQL?
我有一个新编写的系统(用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
。
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 使用std::multimap迭代器创建std::list
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 使用CMake创建QML插件
- 如何在c++中为模板函数实例创建快捷方式
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 试图在visual studio上用C++创建一个桌面应用程序
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 如何在C++20中创建模板别名的推导指南
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 如何创建一个空的全局类并在启动时实例化它
- 无法创建抽象类的实例
- 链接到自行创建的dll失败
- 使用 redis 进行日志缓存:是否可以创建逐出到 PostgreSQL 的逐出策略?
- PostgreSQL:如何为我的单元测试创建临时用户和数据库
- 在Windows环境下在PostgreSQL 9.1中创建函数
- 无法为 Symbian 设备创建 QT postgresql 插件