1. 程式人生 > 其它 >Redis整合springboot其實很簡單

Redis整合springboot其實很簡單

技術標籤:我的java系列redisjava

Redis整合springboot

Jedis

java連線開發工具! java操作redis的中介軟體

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.2.0</version
>
</dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.72</version> </dependency>
import redis.clients.jedis.Jedis;

public class JedisTest
{ public static void main(String[] args) { //建立物件 Jedis jedis = new Jedis("192.168.1.139", 6379); //進行拼接 System.out.println(jedis.ping()); //....此命令和上述所有都一樣 //關閉連線 jedis.close(); } }

整合springboot

springboot2.X之後 jedis換成了lettuce

jedis

在這裡插入圖片描述

整合

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
spring.redis.host=192.168.1.139
spring.redis.port=6379

測試

@SpringBootTest
class RedisSpringbootApplicationTests {
    @Autowired
    RedisTemplate redisTemplate;
    @Test
    void contextLoads() {
        //和redis命令相對應
//        redisTemplate.opsForZSet();
//        redisTemplate.opsForHash();
//        redisTemplate.opsForList();
//        redisTemplate.opsForSet();
//        redisTemplate.opsForValue();
//        redisTemplate.opsForHyperLogLog();
//        redisTemplate.opsForGeo();
//
        //事務
//        redisTemplate.multi();
//        redisTemplate.exec();
//        redisTemplate.discard();
        //獲取連線物件
//        RedisConnection connection = redisTemplate.getConnectionFactory().getConnection();
//        connection.flushAll();
//        connection.flushDb();
        ValueOperations string = redisTemplate.opsForValue();
        string.set("day","hello every day");
        System.out.println(string.get("day"));
    }
}

自定義RedisTemplate

@Configuration
public class RedisConfig {

    //固定模板  可以直接寫
    //自定義RedisTemplate
    @Bean
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<Object, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(redisConnectionFactory);
        //配置具體的序列化方式-->json序列化
        Jackson2JsonRedisSerializer<Object> ser = new Jackson2JsonRedisSerializer<>(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        ser.setObjectMapper(om);

        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
        //key採用string的序列化方式
        template.setKeySerializer(stringRedisSerializer);
        //hash的key採用string的序列化方式
        template.setHashKeySerializer(stringRedisSerializer);
        //value採用Jackson的序列化方式
        template.setValueSerializer(ser);
        //value採用Jackson的序列化方式
        template.setHashValueSerializer(ser);
        //hash的key採用jackson的序列化方式
        template.afterPropertiesSet();
        return template;
    }

}