使用redis的list存儲數據實現隊列功能


在項目開發中,遇到一個問題,用戶在登錄時,注冊,激活等各種操作時(注:由於業務需求,用戶的狀態比較多),日志文件中會產生大量的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中

 

結束。。。。。。

注:由於技術限制,本文重點在於思想上的操作,如有問題,還請指教!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM