springboot整合redis

springboot在整合redis时提高两个模板类,StringRedisTemplate 和 RedisTemplate.              以后对redis的操作都在该模板类中。

StringRedisTemplate是RedisTemplate的子类。

   StringRedisTemplate

             整合的相关依赖 

<!--redis相关的依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>

                修改配置文件

spring.redis.host=192.168.32.175
spring.redis.port=6379

#最大连接数
spring.redis.jedis.pool.max-active=8
#最大空弦数
spring.redis.jedis.pool.max-idle=8
#等待几秒断联
spring.redis.jedis.pool.max-wait=-1ms
#最小空闲数
spring.redis.lettuce.pool.min-idle=0

        测试

   @Autowired
    StringRedisTemplate redisTemplate;

    @Test
    void contextLoads() {
        System.out.println("keys="+redisTemplate.keys("*"));//获取所有key
        Boolean k1 = redisTemplate.hasKey("k1");//判断 k1 是否存在
        System.out.println(k1);
        Boolean k11 = redisTemplate.delete("k1");//删除 key
        System.out.println(k11);

//          todo    关于字符串的操作
        ValueOperations<String, String> forValue = redisTemplate.opsForValue();
        forValue.set("k1","v1");
        System.out.println(forValue.get("k1"));
        //存入后返回布尔值 确认是否存入
        Boolean aBoolean = forValue.setIfAbsent("k2", "v2");
        System.out.println(aBoolean);
        // 自增 自减
        Long k3 = forValue.increment("k3", 20);
        System.out.println(k3);
        Long k4 = forValue.decrement("k4", 20);
        System.out.println(k4);
        // 设置过期时间   3 分钟
        forValue.set("k5","v5",3, TimeUnit.MINUTES);

// todo     关于 hashmap

        HashOperations<String, Object, Object> forHash = redisTemplate.opsForHash();
        // hmset 同时将多个 field-value (域-值)对设置到哈希表 key 中
        forHash.put("k1","name","平墨");
        forHash.put("k1","age","16");
        forHash.put("k1","sex","男");

        Map<String,String> map = new HashMap<>();
        map.put("name","平墨2");
        map.put("age","15");
        map.put("sex","男");
        forHash.putAll("k2",map);

        // hkeys 获取所有哈希表中的字段
        Set<Object> k1 = forHash.keys("k1");
        System.out.println(k1);

        // hgetall 获取在哈希表中指定 key 的所有字段和值
        System.out.println(forHash.entries("k1"));

        // hvals 获取哈希表中所有值
        System.out.println(forHash.values("k1"));

        // hexists 查看哈希表 key 中,指定的字段是否存在。
        System.out.println(forHash.hasKey("k1", "name"));

        // hget 获取存储在哈希表中指定字段的值
        System.out.println(forHash.get("k1", "name"));

// todo     关于  list

        ListOperations<String, String> forList = redisTemplate.opsForList();
        //在列表中添加一个或多个值      与 forList.leftPush() 存入相反
        //forList.rightPushAll("k1","1","2","3","4");

        // 只有这一个查看方法 从左往右查看 -1 为默认为最后一个
        System.out.println(forList.range("k1", 0, -1));

        // lindex 通过索引获取列表值
        System.out.println(forList.index("k1", 2));

        // lpop 移除并获取列表最左边的值
        System.out.println(forList.leftPop("k1"));

// todo     关于 set

        SetOperations<String, String> forSet = redisTemplate.opsForSet();
        //  sadd 添加
        forSet.add("k1","1","2","3","4");

        //  scard 获取指定key的value个数
        System.out.println(forSet.size("k1"));

        // sismember    判断 member 元素是否是集合 key 的成员
        System.out.println(forSet.isMember("k1", "1"));

        // srem     删除key中指定的value
        System.out.println(forSet.remove("k1", "4"));
        

    }

RedisTemplate

它是StringRedisTemplate的父类,它类可以存储任意数据类型,但是任意类型必须序列化,默认采用的是jdk的序列化方式。jdk序列化方式阅读能力差,而且占用空间大. 我们在使用是一般需要人为指定序列化方式。

    @Autowired
    RedisTemplate redisTemplate;

    @Test
    void contextLoads() {
        redisTemplate.setKeySerializer(new StringRedisSerializer());//将key的值设置序列化
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());//将value的值设置序列化
        ValueOperations forValue = redisTemplate.opsForValue();
        forValue.set("user",new User(1,"平墨","焦作"));

        System.out.println(forValue.get("user"));
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值