redis 獲取自增數


    近期,有一個項目需要用到數字的自增整數,范圍是0-199999,但公司數據庫是mongodb、同時裝有mysql、redis等存儲數據的這些數據庫,其中redis是集群模式,mongodb是paa( mongo節點是primary arbit arbit),毫無疑問,這需要處理高並發問題。公司的項目同時也是多節點模式。這樣就決定了自寫高並發自增函數不可以,起初我把方向轉向了mongodb上,同時也找到了對應的方法名和調用方式。

    本來想着可以比較順利的解決,但事與願違,mongodb上執行操作,數據顯示正常。如下圖:

    

    但是在java 調用后發現:

MongoTemplate mongoTemplate = new MongoTemplate(new Mongo("XXXXIP",27017),"mongodbTest");
// MongoTemplate mongoTemplate = GetApplicationContextBean.getMongoTemplate();
Update update = new Update();
update.inc("sequence_value",1);
Query query =new Query();
query.addCriteria(new Criteria("_id").is("productid"));
FindAndModifyOptions options = new FindAndModifyOptions();
// 先查詢,如果沒有符合條件的,會執行插入,插入的值是查詢值 + 更新值
options.upsert(true);
// 返回當前最新值
options.returnNew(true);
Mycol advuser = mongoTemplate.findAndModify(query, update, Mycol.class, "mycol");

 

結果Test后發現執行不了....報超時.....處理了很長時間任然沒解決掉。

毅然決定放棄該方案,尋找新出路,無意間發現redis也可以實現自增序列功能,頓時心里一頓歡喜。那就開始,不多說,全程在集群類中找到這個incr方法

 

 

 

 

 然后寫Test類測試是否滿足並發操作:

結果:

 

 符合預期。就這樣。


免責聲明!

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



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