1、在pom文件引入依赖,如下图所示:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2、在yml文件进行配置
整个配置目前是这样的:
server:
port: 8888
servlet:
context-path: /
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=utf8
username: root
password: 123456
type: com.alibaba.druid.pool.DruidDataSource
redis:
host: 127.0.0.1
port: 6379
password:
connect-timeout: 10s # 连接超时时间
lettuce: # lettuce redis客户端配置
pool: # 连接池配置
max-active: 8 # 连接池最大连接数(使用负值表示没有限制) 默认 8
max-wait: 200s # 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
max-idle: 8 # 连接池中的最大空闲连接 默认 8
min-idle: 0 # 连接池中的最小空闲连接 默认 0
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mapper-locations: classpath:mapper/*.xml
3、redis序列化配置为了方便存储对象不乱码:
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
// 创建模板
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
// 设置连接工厂
redisTemplate.setConnectionFactory(redisConnectionFactory);
// 设置序列化工具
GenericJackson2JsonRedisSerializer jsonRedisSerializer =
new GenericJackson2JsonRedisSerializer();
// key和 hashKey采用 string序列化
redisTemplate.setKeySerializer(RedisSerializer.string());
redisTemplate.setHashKeySerializer(RedisSerializer.string());
// value和 hashValue采用 JSON序列化
redisTemplate.setValueSerializer(jsonRedisSerializer);
redisTemplate.setHashValueSerializer(jsonRedisSerializer);
return redisTemplate;
}
}
4、测试redis,结果如下图所示:
代码如下:
@SpringBootTest
public class RedisTest {
@Autowired
private RedisTemplate redisTemplate;
@Autowired
private StringRedisTemplate stringRedisTemplate;
/**
* StringRedisTemplate:
*
* 默认使用StringRedisSerializer作为键和值的序列化器,所以适用于存储字符串类型的数据。
* 操作方法的返回类型通常是字符串。
* RedisTemplate:
*
* 默认使用JdkSerializationRedisSerializer作为键的序列化器,使用JdkSerializationRedisSerializer或者Jackson2JsonRedisSerializer作为值的序列化器,所以适用于存储任意Java对象。
* 操作方法的返回类型通常是对象。
*/
/**
* 存数据
*/
@Test
void set() {
User user = new User();
user.setId(1L);
user.setAge(18);
user.setEmail("1586156397@qq.com");
user.setName("scj");
redisTemplate.opsForValue().set("user",user);
redisTemplate.opsForValue().set("address1","zhengzhou");
stringRedisTemplate.opsForValue().set("address","北京");
stringRedisTemplate.opsForValue().set("user1",user.toString());
}
/**
* 取数据
*/
@Test
void get() {
Object user = redisTemplate.opsForValue().get("user");
Object address1 = redisTemplate.opsForValue().get("address1");
Object address0 = stringRedisTemplate.opsForValue().get("address");
Object user1 = stringRedisTemplate.opsForValue().get("user1");
System.err.println(address1);
System.err.println(address0);
System.err.println(user);
System.err.println(user1);
}
/**
* 删除数据
*/
@Test
void delete() {
redisTemplate.delete("address1");
redisTemplate.delete("user");
stringRedisTemplate.delete("address");
stringRedisTemplate.delete("user1");
}
}