一、redis简介
redis是一款高性能key-value(键值对)内存型数据库,是非关系型数据库的一种,它采用单线程的架构方式,避免了多线程存在的锁处理造成的资源耗费,读取速度非常快,非常适合变化不是太大但数据量很大的数据的存储和读取。
redis中的数据类型:String、list、hash、zset、set五种。
二、使用场景
项目中涉及到数据查询的操作,先从redis中查询,若redis中不存在则从数据库中查询,再更新到redis中,以后再次执行相同的查询则直接从redis中查询,提高了效率。
三、springboot中使用redis
- pom.xml中配置依赖
<!-- 配置redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2、application.properties中配置redis相关的参数
##配置redis
spring.redis.database=0
spring.redis.host=119.3.250.240
spring.redis.password=888888
spring.redis.port=6379
3、使用redis
redis中有两个模板类:RedisTemplate和StringRedisTemplate。通过模板类可以对redis数据库进行增删改查的操作,redis数据库中存放数据是要对key、value进行序列化的,RedisTemplate模板类默认采用JdkSerializationRedisSerializer序列化类对key和value进行序列化;而StringRedisTemplate默认采用StringRedisSerializer序列化类对key和value进行序列化。
上面说了这么多理论有啥用?对项目有什么影响?如何在项目中使用呢?别急,咱们下面就结合代码进行说明。
1)如果采用StringRedisTemplate模板,首先看它的下源码:
/**
从源码中可以看到,StringRedisTemplate模板类默认采用StringRedisSerializer序列化类对
key和value进行序列化,通过该模板类传参时,key和value要求是String类型。
*/
public class StringRedisTemplate extends RedisTemplate<String, String> {
public StringRedisTemplate() {
this.setKeySerializer(RedisSerializer.string());
this.setValueSerializer(RedisSerializer.string());
this.setHashKeySerializer(RedisSerializer.string());
this.setHashValueSerializer(RedisSerializer.string());
}
public StringRedisTemplate(RedisConnectionFactory connectionFactory) {
this();
this.setConnectionFactory(connectionFactory);
this.afterPropertiesSet();
}
protected RedisConnection preProcessConnection(RedisConnection connection, boolean existingConnection) {
return new DefaultStringRedisConnection(connection);
}
}
下面用StringRedisTemplate做个小测试:
@SpringBootTest
class DemoApplicationTests {