Springboot整合Redis ——RedisTemplate的使用

目录

RedisTemplate五种数据结构的操作

RedisTemplate方法

判断key是否存在

根据key删除reids中缓存数据

指定的key的失效时间

根据key获取过期时间

String类型

list类型

Hash类型

set类型

Springboot之RedisTemplate和StringRedisTemplate的区别

StringRedisTemplate方法的操作


RedisTemplate五种数据结构的操作

  • redisTemplate.opsForValue(); //操作字符串
  • redisTemplate.opsForHash(); //操作hash
  • redisTemplate.opsForList(); //操作list
  • redisTemplate.opsForSet(); //操作set
  • redisTemplate.opsForZSet(); //操作有序zset

RedisTemplate方法

判断key是否存在

/**
     * 判断key是否存在
     */
    @GetMapping("haskey")
    public boolean hasKey(String key) {
        return redisTemplate.hasKey(key);
    }

根据key删除reids中缓存数据

/**
     * 根据key删除reids中缓存数据
     */
    @GetMapping("delredisbykey")
    public void delete(String key) {
        redisTemplate.delete(key);
    }

指定的key的失效时间

/**
     * 指定key的失效时间
     */
    @GetMapping("expire")
    public void expire(String key, long time) {
        //参数一:key
        //参数二:睡眠时间
        //参数三:睡眠时间单位 TimeUnit.DAYS 天 TimeUnit.HOURS 小时 。。。
        redisTemplate.expire(key, time, TimeUnit.MINUTES);
    }

根据key获取过期时间

/**
     * 根据key获取过期时间
     */
    @GetMapping("getexpire")
    public long getExpire(String key) {
        Long expire = redisTemplate.getExpire(key);
        return expire;
    }

 String类型

spring boot整合redis ---- RedisTemplate的使用
spring boot整合redis ---- RedisTemplate的使用
Balmy
Balmy
引入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
1234复制代码

RedisTemplate五种数据结构的操作

    redisTemplate.opsForValue(); //操作字符串redisTemplate.opsForHash(); //操作hashredisTemplate.opsForList(); //操作listredisTemplate.opsForSet(); //操作setredisTemplate.opsForZSet(); //操作有序zset

RedisTemplate方法讲解
判断key是否存在

/**
     * 判断key是否存在
     */
    @GetMapping("haskey")
    public boolean hasKey(String key) {
        return redisTemplate.hasKey(key);
    }

获取指定的key的失效时间

/**
     * 指定key的失效时间
     */
    @GetMapping("expire")
    public void expire(String key, long time) {
        //参数一:key
        //参数二:睡眠时间
        //参数三:睡眠时间单位 TimeUnit.DAYS 天 TimeUnit.HOURS 小时 。。。
        redisTemplate.expire(key, time, TimeUnit.MINUTES);
    }

根据key获取过期时间

/**
     * 根据key获取过期时间
     */
    @GetMapping("getexpire")
    public long getExpire(String key) {
        Long expire = redisTemplate.getExpire(key);
        return expire;
    }

根据key删除reids中缓存数据

/**
     * 根据key删除reids中缓存数据
     */
    @GetMapping("delredisbykey")
    public void delete(String key) {
        redisTemplate.delete(key);
    }

保存和读取String

/**
     * 保存和读取String
     */
    @GetMapping("stringredisdemo")
    public String stringredisdemo() {
        //设置过期时间为1分钟
        redisTemplate.opsForValue().set("key1", "value1", 1, TimeUnit.MINUTES);
        redisTemplate.opsForValue().set("key2", "value2");
        redisTemplate.opsForValue().set("key3", "value3");
        //读取redis数据
        String result1 = redisTemplate.opsForValue().get("key1").toString();
        String result2 = redisTemplate.opsForValue().get("key2").toString();
        String result3 = redisTemplate.opsForValue().get("key3").toString();
        System.out.println("缓存结果为:result:" + result1 + "  " + result2 + "   " + result3);
        return "缓存结果为:result:" + result1 + "  " + result2 + "   " + result3;
    }

list类型

/**
     * 保存和读取list
     */
    @GetMapping("listredisdemo")
    public String listredisdemo() {
        List<String> list1 = new ArrayList<>();
        list1.add("a1");
        list1.add("a2");
        list1.add("a3");
        List<String> list2 = new ArrayList<>();
        list2.add("b1");
        list2.add("b2");
        list2.add("b3");
        redisTemplate.opsForList().leftPush("listkey1", list1);
        redisTemplate.opsForList().rightPush("listkey2", list2);
        List<String> resultList1 = (List<String>) redisTemplate.opsForList().leftPop("listkey1");
        List<String> resultList2 = (List<String>) redisTemplate.opsForList().rightPop("listkey2");
        System.out.println("resultList1:" + resultList1);
        System.out.println("resultList2:" + resultList2);
        return "成功";
    }

Hash类型

/**
     * Hash结构,保存和读取map
     */
    @GetMapping("mapredisdemo")
    public String mapredisdemo() {
        Map<String, String> map = new HashMap<>();
        map.put("key1", "value1");
        map.put("key2", "value2");
        map.put("key3", "value3");
        map.put("key4", "value4");
        map.put("key5", "value5");
        redisTemplate.opsForHash().putAll("map1", map);
        Map<String, String> resultMap = redisTemplate.opsForHash().entries("map1");
        List<String> reslutMapList = redisTemplate.opsForHash().values("map1");
        Set<String> resultMapSet = redisTemplate.opsForHash().keys("map1");
        String value = (String) redisTemplate.opsForHash().get("map1", "key1");
        System.out.println("value:" + value);
        System.out.println("resultMapSet:" + resultMapSet);
        System.out.println("resultMap:" + resultMap);
        System.out.println("resulreslutMapListtMap:" + reslutMapList);
        return "成功";
    }

set类型

/**
     * 保存和读取Set
     */
    @GetMapping("setredisdemo")
    public String getredisdemo() {
        SetOperations<String, String> set = redisTemplate.opsForSet();
        set.add("key1", "value1");
        set.add("key1", "value2");
        set.add("key1", "value3");
        Set<String> resultSet = redisTemplate.opsForSet().members("key1");
        System.out.println("resultSet:" + resultSet);
        return "resultSet:" + resultSet;
    }

Zset类型

/**
     * 保存和读取zset
     */
    @GetMapping("zsetredisdemo")
    public String zsetredisdemo() {
        ZSetOperations.TypedTuple<Object> objectTypedTuple1 = new DefaultTypedTuple<>("zset-5", 9.6);
        ZSetOperations.TypedTuple<Object> objectTypedTuple2 = new DefaultTypedTuple<>("zset-6", 9.9);
        Set<ZSetOperations.TypedTuple<Object>> tuples = new HashSet<>();
        tuples.add(objectTypedTuple1);
        tuples.add(objectTypedTuple2);
        System.out.println(redisTemplate.opsForZSet().add("zset1", tuples));
        System.out.println(redisTemplate.opsForZSet().range("zset1", 0, -1));
        return "成功";
    }

Springboot之RedisTemplate和StringRedisTemplate的区别

二者区别

1. 两者的关系是StringRedisTemplate继承RedisTemplate。

2. 两者的数据是不共通的;

StringRedisTemplate只能管理StringRedisTemplate里面的数据,RedisTemplate只能管理RedisTemplate中的数据。

3. 序列化方式不同

StringRedisTemplate默认采用的是String的序列化策略,保存的key和value都是采用此策略序列化保存的。

RedisTemplate默认采用的是JDK的序列化策略,保存的key和value都是采用此策略序列化保存的。

StringRedisTemplate方法的操作

@SpringBootTest
class SpringbootRedis01ApplicationTests {
    @Autowired
//    private RedisTemplate redisTemplate;
    private StringRedisTemplate stringRedisTemplate;

    @Test
    void contextLoads() {
        Set<String> keys = stringRedisTemplate.keys("*");
        keys.forEach(item-> {
            System.out.println(item);
        });
        System.out.println(123);
    }
    @Test
    public void test01(){
        DataType name = stringRedisTemplate.type("name");
        System.out.println(name);
        Boolean name1 = stringRedisTemplate.delete("name");
        System.out.println(name1);
        Boolean name2 = stringRedisTemplate.hasKey("name");
        System.out.println(name2);
        stringRedisTemplate.opsForValue().set("code","5656");
        stringRedisTemplate.expire("code",300, TimeUnit.SECONDS);
        Long code = stringRedisTemplate.getExpire("code");
        System.out.println(code);
    }
    @Test
    void test02(){
        stringRedisTemplate.opsForValue().set("id","1");//value对于string操作
        String id = stringRedisTemplate.opsForValue().get("id");
        System.out.println(id);

        stringRedisTemplate.opsForValue().set("code01","5555",30,TimeUnit.SECONDS);

        Long expire = stringRedisTemplate.getExpire("code01",TimeUnit.SECONDS);
        System.out.println(expire);
    }
    @Test
//    list操作
    void test03(){
        stringRedisTemplate.opsForList().leftPush("name","andy");
        stringRedisTemplate.opsForList().leftPushAll("names","cxa","hmd","cmy","she");
        String names = stringRedisTemplate.opsForList().leftPop("name");
        System.out.println(names);
        List<String> list = new ArrayList<>();
           list.add(0,"老大");
           list.add(1,"老二");
           list.add(2,"老三");
           list.add(3,"老四");
           stringRedisTemplate.opsForList().leftPushAll("ranking",list);
           List<String> ranking = stringRedisTemplate.opsForList().range("ranking", 0, -1);
           ranking.forEach(item -> System.out.println(item));
    }
    @Test
//    set操作
    void test04(){
       stringRedisTemplate.opsForSet().add("user","曹轩昂","郝梦迪","曹轩昂","郝梦迪");//去重
        Set<String> user = stringRedisTemplate.opsForSet().members("user");
        user.forEach(i -> System.out.println(i));
    }

    @Test
//    hash类型操作
    void test05() {
        stringRedisTemplate.opsForHash().put("stu","name","anqi");
        Object o = stringRedisTemplate.opsForHash().get("stu", "name");
        System.out.println(o);
        stringRedisTemplate.opsForHash().put("person","username","chenjinglong");
        stringRedisTemplate.opsForHash().put("person","userAge","22");
        stringRedisTemplate.opsForHash().put("data","code","20000");
        stringRedisTemplate.opsForHash().put("data","msg","操作成功");
        stringRedisTemplate.opsForHash().put("data","data","100");
        //查看值
        List<Object> person = stringRedisTemplate.opsForHash().values("data");
        person.forEach(item-> System.out.println(item));
        //查看值
        Set<Object> stu = stringRedisTemplate.opsForHash().keys("data");
        stu.forEach(item-> System.out.println(item));

    }
    @Test
//    zset操作
    void test06(){
       stringRedisTemplate.opsForZSet().add("RankingList","CXA",22);
       stringRedisTemplate.opsForZSet().add("RankingList","HMD",22);
       stringRedisTemplate.opsForZSet().add("RankingList","CMY",25);
       stringRedisTemplate.opsForZSet().add("RankingList","SHE",25);
        Set<String> rankingList = stringRedisTemplate.opsForZSet().range("RankingList", 0, -1);
        rankingList.forEach(System.out::println);
        Set<ZSetOperations.TypedTuple<String>> rankingList01 = stringRedisTemplate.opsForZSet().rangeByScoreWithScores("RankingList", 22, 23);
        rankingList01.forEach(item->{
            System.out.println("item:"+item);
            System.out.println(item.getValue());
            System.out.println(item.getScore());
        });

    }
    @Test
    void test07(){
        ArrayList<String> list01 = new ArrayList<String>();
        list01.add("java");
        list01.add("c");
        list01.add("python");
        list01.add("golang");
        redisTemplate.opsForList().leftPush("key01", list01);
        Object key01 = redisTemplate.opsForList().leftPop("key01");
        System.out.println(key01);

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值