1.redisTemplate的incr自增
public Integer incr(String key, Date expireDate) { key = getKey(key); RedisAtomicLong entityIdCounter = new RedisAtomicLong(key, redisTemplate.getConnectionFactory()); entityIdCounter.expireAt(expireDate); Long increment = entityIdCounter.incrementAndGet(); return increment.intValue(); }
2.查问蕴含某字符的key列表scan操作
public Set<String> scan(String matchKey) { Set<String> keys = (Set<String>) redisTemplate.execute((RedisCallback<Set<String>>) connection -> { Set<String> keysTmp = new HashSet<>(); Cursor<byte[]> cursor = connection.scan(new ScanOptions.ScanOptionsBuilder().match(matchKey + "*").count(1000).build()); while (cursor.hasNext()) { keysTmp.add(new String(cursor.next())); } return keysTmp; }); return keys; }
3.批量查问key对应的值列表
//批量查问缓存列表,返回值按顺序排列,在某个key不存在时,对应地位返回null public List<Integer> getMutiIncr(Collection<String> list) { if (CollectionUtils.isEmpty(list)){ return new ArrayList<>(); } ValueOperations ops = redisTemplate.opsForValue(); return ops.multiGet(list); }
4.批量删除key列表对应的缓存
public void deleteBachKeysWithEnv(Collection<String> keys) { if (!CollectionUtils.isEmpty(keys)) { redisTemplate.delete(keys); } }
5.key的指定
hash构造通常存储map类型的数据,不适宜存有incr需要的数据key1:key2:key3构造的数据,不便读取
https://www.jianshu.com/p/4c8...