RedisTemplate使用

本文详细介绍了RedisTemplate在实际应用中的使用,包括各种数据类型的处理,参考了官方文档以提供全面的手册链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RedisTemplate使用

提示:redis的各种类型以及使用手册网址:https://www.redis.net.cn/order/


//redisTemplate.opsForValue().set("stringValue","bbb");
        ValueOperations<String, String> operations = redisTemplate.opsForValue();
        // 1、set(K key, V value) 新增一个字符串类型的值,key是键,value是值
        operations.set("stringValue", "bbb");

        // 2、get(Object key) 获取key键对应的值。
        operations.get("stringValue");
        log.info("取出的字符串:{}", operations.get("stringValue"));

        // 3、append(K key, String value) 在原有的值基础上新增字符串到末尾
        operations.append("stringValue", "appendStr");
        log.info("取出append的之后的字符串:{}", operations.get("stringValue"));

        // 4、get(K key, long start, long end) 截取key键对应值得字符串,从开始下标位置开始到结束下标的位置(包含结束下标)的字符串
        operations.get("stringValue", 0, 3);
        log.info("取出截取key键对应值得字符串:{}", operations.get("stringValue", 0, 3));

        // 5、getAndSet(K key, V value) 获取原来key键对应的值并重新赋新值
        log.info("获取原来key键对应的值并重新赋新值:{}", operations.getAndSet("stringValue", "newString"));
        log.info("取出new字符串:{}", operations.get("stringValue"));

        // 6、setBit(K key, long offset, boolean value) key键对应的值value对应的ascii码,在offset的位置(从左向右数)变为value
        operations.setBit("stringValue", 1, false);
        operations.get("stringValue");
        log.info("通过setBit(K key,long offset,boolean value)方法修改过后的值:{}", operations.get("stringValue"));

        // 7、getBit(K key, long offset) 判断指定的位置ASCII码的bit位是否为1
        operations.getBit("stringValue", 1);
        log.info("通过getBit(K key,long offset)方法判断指定bit位的值是:{}", operations.getBit("stringValue", 1));

        // 8、size(K key) 获取指定字符串的长度
        log.info("通过size(K key)方法获取字符串的长度:[{},{}]", operations.get("stringValue"), operations.size("stringValue"));

        // 9、increment(K key, double delta) 以增量的方式将double值存储在变量中
        operations.increment("doubleKey", 5);
        log.info("通过increment(K key, double delta)方法以增量方式存储double值:{}", operations.get("doubleKey"));

        // 10、increment(K key, long delta) 以增量的方式将long值存储在变量中
        operations.increment("longKey", 6);
        log.info("通过increment(K key, long delta)方法以增量方式存储long值:{}", operations.get("longKey"));

        // 11、setIfAbsent(K key, V value) 如果键不存在则新增,存在则不改变已经有的值
        boolean absentBoolean = operations.setIfAbsent("absentKey", "fff");
        log.info("通过setIfAbsent(K key, V value)方法判断变量值absentValue是否存在::{}", absentBoolean);
        if (absentBoolean) {
            String absentValue = operations.get("absentKey");
            log.info(",不存在,则新增后的值是:{}", absentValue);
            boolean existBoolean = redisTemplate.opsForValue().setIfAbsent("absentKey", "eee");
            log.info(",再次调用setIfAbsent(K key, V value)判断absentValue是否存在并重新赋值:{}", existBoolean);
            if (!existBoolean) {
                absentValue = operations.get("absentKey") + "";
                log.info("如果存在,则重新赋值后的absentValue变量的值是:{}", absentValue);
            }
        }

        // 12、set(K key, V value, long timeout, TimeUnit unit)  设置变量值的过期时间
        operations.set("absentKey", "eee", 5, TimeUnit.SECONDS);
        String timeOutValue = redisTemplate.opsForValue().get("absentKey") + "";
        log.info("通过set(K key, V value, long timeout, TimeUnit unit)方法设置过期时间, 过期之前获取的数据:{}", timeOutValue);
        Thread.sleep(5 * 1000);
        timeOutValue = operations.get("absentKey") + "";
        log.info("等待10s过后,获取的值:{}", timeOutValue);

        // 13、set(K key, V value, long offset) 覆盖从指定位置开始的值
        redisTemplate.opsForValue().set("newabsentKey", "newabsentKey");
        redisTemplate.opsForValue().set("newabsentKey", "dd", 1);
        String overrideString = operations.get("newabsentKey");
        log.info("通过set(K key, V value, long offset)方法覆盖部分的值:{}", overrideString);

        // 14、multiSet(Map<? extends K,? extends V> map) 设置map集合到redis
        Map valueMap = new HashMap();
        valueMap.put("valueMap1", "map1");
        valueMap.put("valueMap2", "map2");
        valueMap.put("valueMap3", "map3");
        operations.multiSet(valueMap);

        // 15、multiGet(Collection<K> keys) 根据集合取出对应的value值 ,根据List集合取出对应的value值
        List paraList = new ArrayList();
        paraList.add("valueMap1");
        paraList.add("valueMap2");
        paraList.add("valueMap3");
        List<String> valueList = operations.multiGet(paraList);
        for (String value : valueList) {
            log.info("通过multiGet(Collection<K> keys)方法获取map值:{}" + value);
            log.info("通过set(K key, V value, long offset)方法覆盖部分的值:{}", overrideString);
        }

        // 16、multiSetIfAbsent(Map<? extends K,? extends V> map)
        valueMap = new HashMap();
        valueMap.put("valueMap1", "map11");
        valueMap.put("valueMap2", "map22");
        valueMap.put("valueMap3", "map33");
        log.info("通过set(K key, V value, long offset)方法覆盖部分的值:{}", redisTemplate.opsForValue().multiSetIfAbsent(valueMap));
        redisTemplate.opsForValue().multiSetIfAbsent(valueMap);

        // 17、redis删除的key
        Set<String> keys = redisTemplate.keys("前缀字符" + "*");
        redisTemplate.delete(keys);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值