java+redis生成六位随机码(字母加数字)
用set去重
package cn.buypb.crmapigateway.util;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
import cn.buy.redis.RedisUtils;
/**
*
* <p>Title: RandomUtils</p>
* <p>Description: TODO 随机数生成</p>
* @author 小短腿跑路贼溜
* @date 2021年5月28日
*/
public class RandomUtils {
/**
*
* <p>Title: generateCode</p>
* <p>Description: 生成6位随机码 如B5H447,AKNQ70</p>
* @return 返回6位随机码
*/
public static String generateCode() {
String charList = "ABCDEFGHIJKLMNPQRSTUVWXY";
String numList = "0123456789";
String rev = "";
// 数字最多不超过四位
int maxNumCount = 4;
// 6位邀请码,字母数字混合
int length = 6;
Random f = new Random();
for (int i = 0; i < length; i++) {
if (f.nextBoolean() && maxNumCount > 0) {
maxNumCount--;
rev += numList.charAt(f.nextInt(numList.length()));
} else {
rev += charList.charAt(f.nextInt(charList.length()));
}
}
return rev;
}
/**
*
* <p>Title: addRedisGenerateCode</p>
* <p>Description: </p>
* @param num 生成条数
*/
public static void addRedisGenerateCode(int count) {
Set<String> codeSet = new HashSet<String>();
// 生成六位随机码
while (codeSet.size() < count) {
String code = generateCode();
codeSet.add(code);
}
// 写入redis
for(String code : codeSet) {
RedisUtils.lpushVlue("generateCode",code);
}
System.out.println("生成六位随机码:"+ codeSet.size() +"条");
}
// public static void main(String[] args) {
// //生成
// addRedisGenerateCode(10000);
// //取出
// System.out.println(RedisUtils.rpop("generateCode"));
//
// }
}