SpringBoot 2.2.0 SpringData Redis使用示例(二)

redis常用操作

redis中常用的数据类型操作;

  • redisTemplate.opsForValue(); 用来操作String数据类型
  • redisTemplate.opsForHash(); 用来操作Hash数据类型
  • redisTemplate.opsForList(); 用来操作List数据类型
  • redisTemplate.opsForSet(); 用来操作Set数据类型
  • redisTemplate.opsForZSet(); 用来操作ZSet数据类型

String数据类型保存操作

 @Test
    public void stringTest() {

        //不会过期
        redisTemplate.opsForValue().set("k1", "v1");

        //10秒后过期
        redisTemplate.opsForValue().set("k2", "v2", 10, TimeUnit.SECONDS);

        //替换
        redisTemplate.opsForValue().set("k1", "w", 0);

        //先判断key是否存在 当key存在时不操作,不存在时执行保存操作
        redisTemplate.opsForValue().setIfAbsent("k2", "v2");

        //保存多个
        Map<String, String> map = new HashMap<>(16);
        map.put("k3", "v3");
        map.put("k4", "v4");
        map.put("k5", "v5");
        redisTemplate.opsForValue().multiSet(map);
        
        //追加字符串,当key存在时会追加字符串,不存在则执行保存操作
        redisTemplate.opsForValue().append("k1","te");
    }

String数据类型获取操作

 @Test
    public void stringGetTest() {

        //获取key为k1的数据
        Object k1 = redisTemplate.opsForValue().get("k1");
        System.out.println(k1);

        //获取k1的值并截取,从0开始到1的值
        String k11 = redisTemplate.opsForValue().get("k1", 1, 1);
        System.out.println(k11);

        //批量获取
        ArrayList<String> list = new ArrayList<>();
        list.add("k1");
        list.add("k3");
        List<Object> objects = redisTemplate.opsForValue().multiGet(list);

        System.out.println(objects);

        //获取key 的长度
        Long size = redisTemplate.opsForValue().size("k1");
        System.out.println(size);
    }

删除key

  @Test
    public void deleteTest() {
        // 删除
        redisTemplate.delete("k1");
        //删除多个
        ArrayList<String> list = new ArrayList<>();
        list.add("k1");
        list.add("k3");
        redisTemplate.delete(list);
    }

操作Hash数据类型

 @Test
    public void saveHashTest() {

        UserDTO userDTO = new UserDTO();
        userDTO.setId(1);
        userDTO.setUsername("redis");
        userDTO.setCreateTime(LocalDateTime.now());
        //保存对象
        redisTemplate.opsForHash().put("dt","3",userDTO);

        // 根据key 查看值是否存在
        Boolean dt = redisTemplate.opsForHash().hasKey("dt", "3");
        System.out.println(dt);

        // 获取key中的值
        Object dt1 = redisTemplate.opsForHash().get("dt", "3");
        System.out.println(dt1);


        //获取所有key
        Set<Object> keys = redisTemplate.opsForHash().keys("dt");
        for (Object key : keys) {
            System.out.println(key);
        }
        //获取所有value
        List<Object> values = redisTemplate.opsForHash().values("dt");

        for (Object value : values) {
            System.out.println(value);
        }

        Map<Object, Object> entries = redisTemplate.opsForHash().entries("dt");


        entries.forEach((k,v)->{
            System.out.println(k);
            System.out.println(v);
        });
        
           //删除
        redisTemplate.opsForHash().delete("dt", 1);

    }

操作List数据类型

  @Test
    public void listTest() {

        //从左边插入
        redisTemplate.opsForList().leftPush("Lk1", "左边");
        redisTemplate.opsForList().leftPush("Lk1", "左边1");


        //添加多个

        redisTemplate.opsForList().leftPushAll("Lk1", "L1", "L2");

        //从右边插入
        redisTemplate.opsForList().rightPush("Rk1", "右边1");

        //从左边获取一个
        Object lk1 = redisTemplate.opsForList().leftPop("Lk1");
        System.out.println(lk1);
        Object lk11 = redisTemplate.opsForList().rightPop("Lk1");
        System.out.println(lk11);


        //获取key为LK1,索引值为0 的数数据
        Object lk12 = redisTemplate.opsForList().index("Lk1", 0);
        System.out.println(lk12);

        //获取key为LK1,索引值为2 的数数据
        Object index2 = redisTemplate.opsForList().index("Lk1", 1);
        System.out.println(index2);

        //范围查找
        List<Object> lk13 = redisTemplate.opsForList().range("Lk1", 0, 1);
        System.out.println(lk13);

        //删除
        //从右边删除一个元素
        Object lk14 = redisTemplate.opsForList().rightPop("Lk1");
        System.out.println(lk14);

        //从左边删除一个元素
        Object lk15 = redisTemplate.opsForList().leftPop("Lk1");
        System.out.println(lk14);

        //指定删除元素
        // l=0 删除所有元素等于L2的元素
        // l>0 删除左边起第几个元素等于L2的元素
        // l<0 删除右边起起第几个元素等于L2的元素
        Long remove = redisTemplate.opsForList().remove("Lk1", 2, "L2");
        System.out.println(remove);
    }

操作Set数据类型

  @Test
    public void setTest() {

        //添加操作
        redisTemplate.opsForSet().add("Sk1", "xiao");
        redisTemplate.opsForSet().add("Sk1", "xiao", "ming","dat","wang");


        //获取操作

        //查询所有

        Set<Object> members = redisTemplate.opsForSet().members("Sk1");
        for (Object member : members) {
            System.out.println(member);
        }

        //随机获取
        Object sk1 = redisTemplate.opsForSet().randomMember("Sk1");
        System.out.println(sk1);

        //随机获取多个
        List<Object> sk11 = redisTemplate.opsForSet().randomMembers("Sk1", 2);
        for (Object o : sk11) {
            System.out.println(o);
        }

    }

删除操作

  @Test
    public void setDeleteTest() {

        //    删除
        Long sk1 = redisTemplate.opsForSet().remove("Sk1", "xiao");
        System.out.println(sk1);
        //随机删除几个元素
        List<Object> sl1 = redisTemplate.opsForSet().pop("Sl1", 1);
        for (Object o : sl1) {
            System.out.println(o);
        }
    }

常用集合操作

 @Test
    public void setUTest() {
        //添加操作
        // redisTemplate.opsForSet().add("Sk2", "xiao", "woshi", "liwang", "mazi");
        // redisTemplate.opsForSet().add("Sk1", "xiao", "ming", "dat", "wang", "mazi");

        //交集
        Set<Object> intersect = redisTemplate.opsForSet().intersect("Sk1", "Sk2");
        for (Object o : intersect) {
            System.out.println(o);
        }
        //并集
        Set<Object> union = redisTemplate.opsForSet().union("Sk1", "Sk2");

        for (Object o : union) {
            System.out.println(o);
        }

        //差集
        Set<Object> difference = redisTemplate.opsForSet().difference("Sk1", "Sk2");

        for (Object o : difference) {
            System.out.println(o);
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值