| | |
| | | * @author Z |
| | | */ |
| | | @Component |
| | | @SuppressWarnings({"unchecked","all"}) |
| | | @SuppressWarnings({"unchecked", "all"}) |
| | | public class RedisUtils { |
| | | private static final Logger log = LoggerFactory.getLogger(RedisUtils.class); |
| | | @Value("${jwt.generate-order-sn}") |
| | | private String generateOrderSn; |
| | | @Value("${wx.enabled}") |
| | | private Boolean wxEnabled; |
| | | private static final String T = "-T-"; |
| | | private static final String T = "T-"; |
| | | private static final String OY = "OY-"; |
| | | private RedisTemplate<Object, Object> redisTemplate; |
| | | |
| | | public RedisUtils(RedisTemplate<Object, Object> redisTemplate) { |
| | |
| | | public String generateOrderSn(Integer i) { |
| | | StringBuilder sb = new StringBuilder(); |
| | | String date = new SimpleDateFormat("yyyyMMdd").format(new Date()); |
| | | String key = generateOrderSn + date; |
| | | String key = generateOrderSn + i + date; |
| | | Long increment = increment(key); |
| | | sb.append(date); |
| | | sb.append(String.format("%04d", i)); |
| | |
| | | } |
| | | if (wxEnabled) { |
| | | // 生产环境 |
| | | return sb.toString(); |
| | | return OY + sb.toString(); |
| | | } else { |
| | | // 测试环境 |
| | | return T + sb.toString(); |
| | |
| | | |
| | | /** |
| | | * 批量模糊删除key |
| | | * |
| | | * @param pattern |
| | | */ |
| | | public void scanDel(String pattern){ |
| | | public void scanDel(String pattern) { |
| | | ScanOptions options = ScanOptions.scanOptions().match(pattern).build(); |
| | | try (Cursor<byte[]> cursor = redisTemplate.executeWithStickyConnection( |
| | | (RedisCallback<Cursor<byte[]>>) connection -> (Cursor<byte[]>) new ConvertingCursor<>( |
| | |
| | | /** |
| | | * 普通缓存获取 |
| | | * |
| | | * @param key 键 |
| | | * @param key 键 |
| | | * @param clazz 列表中元素的类型 |
| | | * @return 值 |
| | | */ |
| | |
| | | * @return 值 |
| | | */ |
| | | public String getStr(String key) { |
| | | if(StrUtil.isBlank(key)){ |
| | | if (StrUtil.isBlank(key)) { |
| | | return null; |
| | | } |
| | | Object value = redisTemplate.opsForValue().get(key); |
| | |
| | | public List<Object> multiGet(List<String> keys) { |
| | | List list = redisTemplate.opsForValue().multiGet(Sets.newHashSet(keys)); |
| | | List resultList = Lists.newArrayList(); |
| | | Optional.ofNullable(list).ifPresent(e-> list.forEach(ele-> Optional.ofNullable(ele).ifPresent(resultList::add))); |
| | | Optional.ofNullable(list).ifPresent(e -> list.forEach(ele -> Optional.ofNullable(ele).ifPresent(resultList::add))); |
| | | return resultList; |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 分布式ID生成器 |
| | | * |
| | | * @param key 键 |
| | | * @param value 值 |
| | | * @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期,注意:这里将会替换原有的时间 |
| | | * @return true成功 false 失败 |
| | | */ |
| | | public boolean setIfAbsent(String key, Object value, long time) { |
| | | try { |
| | | if (time > 0) { |
| | | Boolean result = redisTemplate.opsForValue().setIfAbsent(key, value, time, TimeUnit.SECONDS); |
| | | return result; |
| | | } else { |
| | | return false; |
| | | } |
| | | } catch (Exception e) { |
| | | log.error(e.getMessage(), e); |
| | | return false; |
| | | } |
| | | } |
| | | // ================================Map================================= |
| | | |
| | | /** |
| | |
| | | |
| | | /** |
| | | * 递增 |
| | | * |
| | | * @param key |
| | | * @return |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 递减 |
| | | * |
| | | * @param key |
| | | * @return |
| | | */ |