SpringBoot操作Redis

stringRedisTemplate用于存储string类型

//注入stringRedisTemplate
    @Autowired
    //key value 都是字符串
    private StringRedisTemplate stringRedisTemplate; 
  • 操作redis字符串 opsForValue操作的是string类型

   @Test
    public void testString(){
        stringRedisTemplate.opsForValue().set("name","李乃龙");//放值
        String name = stringRedisTemplate.opsForValue().get("name"); //取值
        System.out.println("name:"+name);

        stringRedisTemplate.opsForValue().set("code","1234",60, TimeUnit.SECONDS);//设置超时时间
        stringRedisTemplate.opsForValue().append("name", "他是一个好人,单纯的少年");//追加一个值
    }
  • 操作redis中list类型 opsForList

    @Test
    public void getList(){
        stringRedisTemplate.opsForList().leftPush("names", "小李");//创建一个列表放入一个元素

        stringRedisTemplate.opsForList().leftPushAll("names","小刘","小赵","小王"); //创建一个列表放入多个元素

        List<String> names=new ArrayList<>();
        names.add("xiaominng");
        names.add("liujuan");
        stringRedisTemplate.opsForList().leftPushAll("names",names); //放list集合

        List<String> range = stringRedisTemplate.opsForList().range("names", 0, -1); //获取list全部的值
        range.forEach(key->{
            System.out.println("list:"+key);
        });

        String index = stringRedisTemplate.opsForList().index("names",2);//获取指定下标的值
        System.out.println("index:"+index);

        stringRedisTemplate.opsForList().trim("names",1,3);//截取区间段

        List<String> ranges = stringRedisTemplate.opsForList().range("names", 0, 3); //获取list全部的值
        ranges.forEach(key->{
            System.out.println("list:"+key);
        });
    }
  • 操作key相关的

@Test
    public void testKey(){
//        stringRedisTemplate.delete("name");//删除一个key
        Boolean aBoolean = stringRedisTemplate.hasKey("name");//判断莫个key是否存在
        System.out.println("aBoolean:"+aBoolean);

        DataType type = stringRedisTemplate.type("name");//判断key的类型
        System.out.println("type:"+type);

        Set<String> keys = stringRedisTemplate.keys("*");//获取所有的key
        keys.forEach(key->{
            System.out.println("keys:"+key);
        });

        Long time = stringRedisTemplate.getExpire("name");//获取key的超时时间 -1用不超时
        System.out.println("time:"+time);

        String randomKey = stringRedisTemplate.randomKey();//在redis中随机获取一个key
        System.out.println("randomKey:"+randomKey);
//        stringRedisTemplate.rename("age","age1");//该key的名字,前提key必须纯在不然报错
//        Boolean ifAbsent = stringRedisTemplate.renameIfAbsent("age,", "age1");//如果key存在则修改

        stringRedisTemplate.move("name",1);//把key移动到1库
    }
  • 操作redis中的set类型

 @Test
    public void getSet(){
        stringRedisTemplate.opsForSet().add("sets", "张三", "张三", "小陈", "xiaoming");//放入多个值

        Set<String> sets = stringRedisTemplate.opsForSet().members("sets");//查看set
        sets.forEach(value->{
            System.out.println("sets:"+value);
        });

        DataType setType = stringRedisTemplate.type("sets");
        System.out.println(setType);

        Long size = stringRedisTemplate.opsForSet().size("sets"); //获取长度
        System.out.println(size);
    }
  • 操作redis中Zset类型

@Test
    public void testZset(){
        stringRedisTemplate.opsForZSet().add("zsets","张三",100); //创建并放入元素

        Set<String> zsets = stringRedisTemplate.opsForZSet().range("zsets", 0, -1);//指定范围查询
        zsets.forEach(key->{
            System.out.println("zsts:"+key);
        });

        Set<ZSetOperations.TypedTuple<String>> typedTuples =
                stringRedisTemplate.opsForZSet().rangeByScoreWithScores("zsets", 0, 1000); //获取指定元素以及分数
        typedTuples.forEach(typedTuple->{
            System.out.println("typedTuple:"+typedTuple.getValue());
            System.out.println("typedTuple:"+typedTuple.getScore());
        });
    }
  • 操作redis中hash类型

 @Test
    public void testHash(){
        stringRedisTemplate.opsForHash().put("maps","name","张三"); //创建一个hash类型创建key value

        Map<String ,String> map = new HashMap<>();
        map.put("age","12");
        map.put("bir","2001-12-12");
        stringRedisTemplate.opsForHash().putAll("maps",map);//放入多个

        List<Object> objects = stringRedisTemplate.opsForHash().multiGet("maps", Arrays.asList("name", "age"));//获取多个
        objects.forEach(values->{
            System.out.println("values:"+values);
        });

        String value= (String)stringRedisTemplate.opsForHash().get("maps", "name");//获取hash中一个key的值
        System.out.println("value:"+value);

        List<Object> maps = stringRedisTemplate.opsForHash().values("maps");//获取所有values
        maps.forEach(listMap->{
            System.out.println("listMap:"+listMap);
        });

        Set<Object> keys = stringRedisTemplate.opsForHash().keys("maps");//获取所有的key
        keys.forEach(listKey->{
            System.out.println("listKey:"+listKey);
        });
    }

redisTemplate用于存储对象

//注入redisTemplate;
//注入redisTemplate;
    @Autowired
    private RedisTemplate redisTemplate;//redisTemplate key value

    @Test
    private void testRedisTemplate(){
        /**
         * redisTemplate对象中 key he value的序列话都是jdk序列话
         * 修改默认key序列话方案
         */
        User user = new User();

        //修改序列话规则
        redisTemplate.setKeySerializer(new StringRedisSerializer()); //把key设置成String

        user.setId(UUID.randomUUID().toString());
        user.setName("小车");
        user.setAge(23);
        user.setBir(new Date());
        redisTemplate.opsForValue().set("name",user);//reids进行设置,对象序列话

        User name = (User)redisTemplate.opsForValue().get("name");
        System.out.println(name);

        redisTemplate.opsForList().leftPush("list",user);

        redisTemplate.opsForSet().add("set",user);

        redisTemplate.opsForSet().add("zset",user,10);

        //设置hash key序列化
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());

        redisTemplate.opsForHash().put("map","name",user);
    }

redis绑定操作

@Test
    public void testBount(){
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());

        //对一个key进行多次操作
        stringRedisTemplate.opsForValue().set("name","zhangsan");
        stringRedisTemplate.opsForValue().append("name","是个好人");
        String name = stringRedisTemplate.opsForValue().get("name");
        System.out.println(name);

        //对key进行绑定。后面的操作都是基于这个key的操作
        BoundValueOperations<String, String> stringStringBoundValueOperations = stringRedisTemplate.boundValueOps("name");
        stringStringBoundValueOperations.set("linailong");
        stringStringBoundValueOperations.append("是个少年");
        String s = stringStringBoundValueOperations.get();
        System.out.println(s);

        //对List set zset进行绑定
        BoundListOperations<String, String> stringBoundListOperations = stringRedisTemplate.boundListOps("Lists");
        stringBoundListOperations.leftPushAll("张山","李四","小陈");
        List<String> range = stringBoundListOperations.range(0, -1);
        range.forEach(list->{
            System.out.println("list"+list);
        });

        //set
//        stringRedisTemplate.boundSetOps();
//        redisTemplate.boundSetOps();

        //zset
//        stringRedisTemplate.boundZSetOps();
//        redisTemplate.boundZSetOps();

        //hash
//        stringRedisTemplate.boundHashOps();
//        redisTemplate.boundHashOps();
    }

总结

     * 1,对key value是String使用stringRedisTemplate
     * 2,对key value存在对象的使用redisTemplate
     * 3,针对key多次操作的可以使用boundxxxOps()的api简化书写
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值