SpringBoot整合Redis

文章目录

    • 一、依赖
    • 二、配置文件
    • 三、使用
      • 1. StringRedisTemplate
      • 2. RedisTemplate
        • 操作字符串(未指定序列化器)
        • 操作字符串(指定序列化器)
        • 操作java对象

一、依赖

    
    <dependency>
      <groupId>org.springframework.bootgroupId>
      <artifactId>spring-boot-starter-data-redisartifactId>
    dependency>

二、配置文件

  #Redis数据库及连接池设置
  redis:
    jedis:
      pool:
        max-active: 10
        max-idle: 5
        min-idle: 1
        max-wait: -1
    host: 192.168.127.11
    port: 6379
    database: 0

三、使用

1. StringRedisTemplate

特点: 只能操作字符串

    @Autowired
    private StringRedisTemplate redisTemplate;

    @Test
    public void testRedis(){
        ValueOperations valueOperations = redisTemplate.opsForValue();
        valueOperations.set("ace", "gjh");
        String s = (String) valueOperations.get("ace");
        System.out.println(s);
    }

SpringBoot整合Redis_第1张图片

2. RedisTemplate

操作字符串(未指定序列化器)

    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public void testRedis(){
        ValueOperations valueOperations = redisTemplate.opsForValue();
        valueOperations.set("ace", "gjh");
        String s = (String) valueOperations.get("ace");
        System.out.println(s);
    }

SpringBoot整合Redis_第2张图片
但在redis客户端可以看到,键前面有一些乱码字符\xac\xed\x00\x05t\x00\x03
在这里插入图片描述
原因是没有指定序列化器,默认用的是JdkSerializationRedisSerializer

操作字符串(指定序列化器)

如果指定了合适的序列化器,就不会出现\xac\xed\x00\x05t\x00\x03乱码了。
下面用的是StringRedisSerializer序列化器,效果等同于使用StringRedisTemplate

    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public void testRedis(){
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new StringRedisSerializer());
        ValueOperations valueOperations = redisTemplate.opsForValue();
        valueOperations.set("ace", "gjh");
        String s = (String) valueOperations.get("ace");
        System.out.println(s);
    }

SpringBoot整合Redis_第3张图片

操作java对象

注意: java对象一定要实现序列化接口Serializable

实体类对象:

public class RedisObj implements Serializable {

    private String id;
    private String name;
    private int age;
    private Date bir;

	//省略getter/setter/constructor/toString等方法
}

为了让key不产生乱码字符\xac\xed\x00\x05t\x00\x03,可以设置key的序列化方式为StringRedisSerializer
测试类:

    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public void testRedis(){
    	redisTemplate.setKeySerializer(new StringRedisSerializer());
        Date bir = new Date();
        RedisObj redisObj = new RedisObj("1001", "gjh", 18, bir);
        ValueOperations valueOperations = redisTemplate.opsForValue();
        valueOperations.set("ace", redisObj);
        RedisObj r = (RedisObj) valueOperations.get("ace");
        System.out.println(r);
    }

你可能感兴趣的:(Spring,java)