zoukankan      html  css  js  c++  java
  • 【redis】在spring boot2.0中使用redis的StringRedisTemplate 自动注入@Autowired

    1.使用opv.increment 达到增量的效果【判断某个用户 是第几次做这种操作】

    @RequestMapping("createCode")
    @RestController
    public class CreateCodeController {
    
        @Autowired
        StringRedisTemplate stringRedisTemplate;
    
        public static final String TEN_CODE_GLOBAL_KEY_IN_REDIS = "PISEN-CLOUD-LUNA-SECURITY-CODE-TEN-GLOBAL:";
    
    
    
        @RequestMapping("getCode")
        public UniVerResponse<String>  createCode(){
    
            String uid = "test";
            //使用hashmap实现同步锁
            //这里uid可以是
            // 1>使用者的uid,标明 同一个使用者同一时间只能有一个获取码的任务
            // 2>任务单的uid,标明 一个使用者如果有不同的任务单,可以保证一个用户的多个任务单的每一个任务单只能有一个获取码的任务
    
            synchronized(HashMapLock.getLock(uid)){
    
                UniVerResponse<String> res = new UniVerResponse<>();
                //区分用户的基础序列值
                String serialNumber = "";
    
                //1.例如:user.id是数据库自增的
                //2.例如本user想要下载防伪码,那么先取出他的id
                //3.例如id = 10L 或者用户id可以是1000L
                Long id = 99L;
                String str2 = CreateCode.fmtStringAddZero(id,3,"0");
    
                //使用redis的增量方法  达到每次用户调用这个获取码  都会次数+1
                ValueOperations<String, String> opv = stringRedisTemplate.opsForValue();
                //[key:value]  [PISEN-CLOUD-LUNA-SECURITY-CODE-TEN-GLOBAL:099   :   次数]
                String str1 = opv.increment(TEN_CODE_GLOBAL_KEY_IN_REDIS + str2, 1).toString();
    
                str1 = CreateCode.fmtStringAddZero(str1,3,"0");
    
                serialNumber = str1 + str2;
                //生成 20个不重复的code
                List<String> codeList = CreateCode.getCode(serialNumber,2000);
                for (String s : codeList) {
                    System.out.println(s);
                }
    
                res.beTrue("成功");
                return  res;
            }
        }
    View Code
  • 相关阅读:
    拷贝构造,移动构造,右值引用,左值,右值,std::move,std::forward,std::ref
    枚举类型 enum以及enum class
    C++ 静态库LIB的使用方法
    array(数组容器)
    C++标准模板库STL
    C++ 动态库DLL的使用方法
    函数指针与回调函数
    VS项目属性等一系列问题
    逻辑运算符(且或非),位运算符(异或),函数对象运算(bit_or)
    pinpoint-grpc编译异常问题记录
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/9300231.html
Copyright © 2011-2022 走看看