添加缓存刷新机制

This commit is contained in:
aozhiwei 2020-07-03 16:53:13 +08:00
parent 10581cd1f0
commit b11389ec88
2 changed files with 42 additions and 0 deletions

View File

@ -1,6 +1,7 @@
#include "precompile.h"
#include <a8/openssl.h>
#include <a8/timer.h>
#include "dbengine.h"
@ -280,5 +281,45 @@ void DBHelper::AddCache(
user_info->mutable_base_data()->set__online(0);
cache_users_hash[account_id] = user_info;
cache_users_list.push_back(user_info);
a8::Timer::Instance()->AddDeadLineTimer
(
1000 * 60 * 5 + rand() % 1000,
a8::XParams()
.SetSender(account_id),
[] (const a8::XParams& param)
{
DBHelper::Instance()->RemoveCache(param.sender);
}
);
}
}
void DBHelper::RemoveCache(const std::string& account_id)
{
if (cache_users_hash.size() < 300) {
a8::Timer::Instance()->AddDeadLineTimer
(
1000 * 60 * 5 + rand() % 1000,
a8::XParams()
.SetSender(account_id),
[] (const a8::XParams& param)
{
DBHelper::Instance()->RemoveCache(param.sender);
}
);
return;
}
auto itr = cache_users_hash.find(account_id);
if (itr != cache_users_hash.end()) {
auto itr2 = std::find(cache_users_list.begin(),
cache_users_list.end(),
itr->second);
if (itr2 != cache_users_list.end()) {
cache_users_list.erase(itr2);
} else {
abort();
}
delete itr->second;
cache_users_hash.erase(itr);
}
}

View File

@ -54,4 +54,5 @@ private:
long long user_value3,
int last_logintime
);
void RemoveCache(const std::string& account_id);
};