ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
ngl::db_cache Class Reference

数据库记录内存缓存层 More...

#include <db_cache.h>

Public Member Functions

void set_cachefun (const callback &afun, int32_t aintervalms)
 设置刷新回调函数和定时器
void push (i64_actorid aid)
 标记单个记录为脏
void push (const std::vector< i64_actorid > &aidlist)
 批量标记记录为脏
void execute (const tools::wheel_node *)
 执行批量刷新操作

Detailed Description

数据库记录内存缓存层

带有脏标记跟踪的数据库记录缓存系统,用于批量刷新数据库更新。 通过时间轮定时器定期将脏记录ID批量刷新到数据库,提高写入性能。 热路径只需入队ID并返回,实际刷新操作在定时器回调中执行。

Note
禁止拷贝和赋值,确保缓存状态的一致性。
// 使用示例
cache.set_cachefun([](std::set<int64_t>& dirty_ids) {
// 批量刷新脏记录到数据库
for (int64_t id : dirty_ids) {
// 更新数据库记录
}
}, 5000); // 每5秒刷新一次
// 标记记录为脏
cache.push(12345); // 单个记录
cache.push({1, 2, 3}); // 批量记录

Member Function Documentation

◆ execute()

void ngl::db_cache::execute ( const tools::wheel_node * )
inline

执行批量刷新操作

Parameters
定时器节点指针(未使用)

交换当前脏记录集合和副本集合,然后在锁外执行回调。 避免阻塞生产者线程。

◆ push() [1/2]

void ngl::db_cache::push ( const std::vector< i64_actorid > & aidlist)
inline

批量标记记录为脏

Parameters
aidlist脏记录ID列表

线程安全,使用写锁保护。

◆ push() [2/2]

void ngl::db_cache::push ( i64_actorid aid)
inline

标记单个记录为脏

Parameters
aid脏记录ID

线程安全,使用写锁保护。

◆ set_cachefun()

void ngl::db_cache::set_cachefun ( const callback & afun,
int32_t aintervalms )
inline

设置刷新回调函数和定时器

Parameters
afun刷新回调函数,接收脏记录ID集合
aintervalms刷新间隔(毫秒)

脏ID在共享时间轮上批量刷新,因此热路径只需入队ID并返回。


The documentation for this class was generated from the following file: