zoukankan      html  css  js  c++  java
  • 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类测试是否满足并发操作:

    结果:

     符合预期。就这样。

  • 相关阅读:
    安装ffmpeg视频软件 Linux
    Linux 计划任务
    分享一个大牛的博客地址
    yii验证码Captcha使用以及为什么验证码不刷新问题
    YII缓存之数据缓存
    YII用户注册和用户登录(二)之登录和注册在视图通过表单使用YII小物件并分析
    YIIMVC之用户注册和用户登录
    yii 总结
    yii linux 自动执行脚本
    yii downlist
  • 原文地址:https://www.cnblogs.com/focusHots/p/11598916.html
Copyright © 2011-2022 走看看