在項目開發中,遇到一個問題,用戶在登錄時,注冊,激活等各種操作時(注:由於業務需求,用戶的狀態比較多),日志文件中會產生大量的SQL語句,日志文件膨脹過快!所以就把用戶的一些譬如一些保存登錄激活操作時,采用異步操作,將用戶的信息保存在redis中。設置定時器,在用戶不太活躍的時間段,再對數據進行落地操作!具體代碼如下:
第二步:放入緩存的具體操作(Java使用jedis客戶端)
public void saveUserToQueue(User user, String queueName) {
if (user == null)
return;
try {
//使用rpush是朝list集合的尾部順序插入數據,queueName作為redis的key
commonRedisService.rpush(queueName, JsonUtil.Object2Json(user));
} catch (TimeoutException e) {
logger.info("save User To Queue[{}] failed: !", queueName, e);
}
}
第三部:job操作對數據進行落地
使用redis的lpop方法,從list的頭部拿出數據,這樣就實現了先進先出的操作!
第四步:quartz的配置
1、在spring的bean.xml中配置一個job
2、定義觸發器
3、將觸發器加入到quartz中
結束。。。。。。
注:由於技術限制,本文重點在於思想上的操作,如有問題,還請指教!