SpringBoot初体验-集成Redis

200 阅读1分钟

一、引入Maven依赖

<!-- redis依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

二、配置Redis相关信息

spring:
  redis:
    host: 192.168.1.152
    port: 6870
    password: 2503
    database: 0

三、增加Redis配置类

/**
 * 为了解决乱码问题
 */
@Configuration
public class RedisConfig {
    @Autowired
    private RedisTemplate redisTemplate;

    @Bean
    public RedisTemplate redisTemplateInit() {
        //设置序列化Key的实例化对象
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        //设置序列化Value的实例化对象
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        return redisTemplate;
    }
}

四、使用RedisTemplate

@RestController
@RequestMapping("/article")
public class ArticleEntityController {

   /**
    * 通过SpringBoot提供的RedisTemplate操作Redis数据库
    */
   @Autowired
   private RedisTemplate redisTemplate;

   @RequestMapping("/list")
   public String list() {
      // 设置reids值
      redisTemplate.opsForValue().set("redis_key", "存放在redis里的值");
      // 取出redis值
      String redis_key = (String) redisTemplate.opsForValue().get("redis_key");
      return redis_key;
   }
}

五、RedisTemplate常用方法

// 添加key/value
redisTemplate.opsForValue().set("redis_key", "存放在redis里的值");
// 添加key/value并且设置过期时间,具备原子性
redisTemplate.opsForValue().set("redis_key", "存放在redis里的值", 20, TimeUnit.SECONDS);
// 取出redis值
String redis_key = (String) redisTemplate.opsForValue().get("redis_key");
// 判断是否存在key
Boolean hasKey = redisTemplate.hasKey("redis_key");
// 删除key
Boolean delete = redisTemplate.delete("redis_key");
// 顺序递增,可用于分布式主键生成
Long index = redisTemplate.opsForValue().increment("index");
// 执行lua脚本
String key = "index";
String value = "UUID";
stringRedisTemplate.opsForValue().set(key, value);
DefaultRedisScript redisScript = new DefaultRedisScript<>();
redisScript.setLocation(new ClassPathResource("lua/delete_key.lua"));
redisScript.setResultType(Long.class);
Long execute = stringRedisTemplate.execute(redisScript,
        (RedisSerializer) stringRedisTemplate.getKeySerializer(),
        (RedisSerializer) stringRedisTemplate.getKeySerializer(),
        Lists.newArrayList(key), value);
System.out.println("执行结果: " + execute);

六、RedisTemplate和StringRedisTemplate的区别

1、RedisTemplate默认采用的是JDK的序列化策略,存入的key/value会将数据先序列化成字节数组然后在存入Redis数据

2、StringRedisTemplate默认采用的是String的序列化策略,存入的key/value直接以字符串明文形式存储,当我们存储的数据是字符串时使用

3、还有需要注意的是,使用RedisTemplate存入的数据必须使用RedisTemplate取出,否则就是获取到null。StringRedisTemplate同理。

@各位掘金的小伙伴,如有任何Java技术方面疑问可私聊本人(wx:haostudydaydayup),一起探讨一起进步。