生成随机数并在Redis中存储

Posted on 2020-07-20 08:45  一江潮  阅读(815)  评论(0)    收藏  举报

 

/**
* 生成 num 位随机码
*
* @param num 位数
* @return String
*/
public static String randomCode(int num) {
StringBuilder builder = new StringBuilder();
Random random = new Random();
for (int i = 0; i < num; i++) {
builder.append(random.nextInt(10));
}
return builder.toString();
}

public static final String REDIS_STUDENT_KEY = "jq:ms:m:";
@Autowired
private StringRedisTemplate stringRedisTemplate;

 

// 生产六位唯一码
Set<String> randCodes = stringRedisTemplate.opsForSet().members(REDIS_STUDENT_KEY + missionId);
String randCode;
while (true) {
randCode = NumberUtils.randomCode(4);
// Set 中不存在 randCode
if (randCodes == null || !randCodes.contains(randCode)) {
// 当前时间,缓存中不存在 randCode
Boolean isMember = stringRedisTemplate.opsForSet().isMember(REDIS_STUDENT_KEY + missionId, randCode);
if (isMember == null || !isMember) {
break;
}
}
}

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3