redisTemplate批量操作

Posted 一片秋叶一树春

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redisTemplate批量操作相关的知识,希望对你有一定的参考价值。

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...

以上是关于redisTemplate批量操作的主要内容,如果未能解决你的问题,请参考以下文章

RedisTemplate的各种操作(sethashliststring)

RedisTemplate常用方法总结

Mybaits的批量操作包括批量删除 批量增加和批量更新

RedisTemplate操作Redis数据结构-字符串类型

RedisTemplate 获取redis中以某些字符串为前缀的KEY列表

Redis 数据类型操作指令以及对应的RedisTemplate方法