1. 启动redis服务
因为我们需要使用redis数据库,所以你必须在本地或者远程服务器启动redis服务。
远程启动:需要开启外网访问6379端口(redis服务默认开启的端口)的权限,具体的启动步骤可以自行百度。(这里我使用的是阿里云服务器!)
2. 新建maven项目
当然你也可以选择新建springboot项目,没啥区别!
3. 添加依赖
<dependencies>
<!-- 操作redis的依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.6.7</version>
</dependency>
<!--注意此处依赖,缺少会导致工具类中注入redisTeplate实例失败-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.4</version>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
<version>1.18.24</version>
</dependency>
<!-- test组件 进行测试用的-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<version>2.6.7</version>
</dependency>
</dependencies>
- 如果报如下错误,需要再添加一个依赖
commons-pool2
:
2023-10-23 17:08:19.907 [main] ERROR org.springframework.boot.SpringApplication:856 - Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘redisUtils’: Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘redisTemplate’ defined in class path resource [sany/scc/api/config/RedisConfig.class]: Unsatisfied dependency expressed through method ‘redisTemplate’ parameter 0; neste
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.9.0</version>
</dependency>
4. 完善配置文件(application.yml)
spring:
# 配置redis
redis:
host: xxx.xxx.xxx.xx # 填写localhost或者远程的ip
port: 6379
# 设置默认操作的数据库
database: 14
# 超时时间
timeout: 10000ms
password: xxxxxxxxxxxx # 填写你的redis服务密码
lettuce:
pool:
# 最大的连接数
max-active: 8
# 连接阻塞时间,默认-1
max-times: 10000ms
# 最大空闲连接,默认8
max-idle: 200
min-idle: 0
5. 测试
- 查看redis的可视化工具
因为我们的yml文件配置,默认操作14号数据库,所以我们查看14号数据库即可。
出现了乱码问题!!!
6. 解决乱码问题
因为没有对redis做序列化配置,所以才会出现这样的原因。
如果没有做序列化配置,当我们存储复杂对象时候也会出现乱码或者其他异常问题。所以使用redis必须做序列化配置!
进行序列化配置,注意别少了jackson-databind
依赖!
代码如下:
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
//key 采用String的序列化的方式
redisTemplate.setKeySerializer(new StringRedisSerializer());
//value的序列化采用jackson
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
//hash的 key也采用String序列化的方式
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
//hash的value也采用jackson
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
//注入连接工厂
redisTemplate.setConnectionFactory(factory);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}
7. 再次测试
Redis数据库没有乱码了,好耶!!!
8. redis的正确使用
redis一般是通过工具类来进行操作!
- 工具类
- 测试工具类
工具类的编写可以参考一下操作:java与redis的实现
java的hash操作
java的list操作
java的set操作
sorted set操作
Geo操作
Stream操作
- 查看redis的可视化工具
至此,Java引入redis大功告成!!!