SpringBoot中使用Redis

SpringBoot中使用Redis

1.在本地或者云端安装redis服务

2.项目中使用

2.1 引入依赖

<!-- redis start-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--common-pool 对象池,使用redis时必须引入-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
<!--Jackson依赖 如果需要将redis存入时json格式化 必须引入 而且必须写配置文件 RedisConfig -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>

image

2.2 写配置信息

spring:
redis:
database: 3
host: localhost
port: 16379
password: Zz@.789++

image

2.3写配置文件

用于序列化键值,便于观看

redisTemplate是使用jdk默认编码格式来序列化的。

存的key value在redis数据库中实际上是乱码的。而StringTemplate不会。

@Configuration
public class RedisConfig {
/**
*
* @param connectionFactory
* @return org.springframework.data.redis.core.RedisTemplate<java.lang.String, java.lang.Object>
* @author pyb
* @date 2023/12/21 15:41
* 初始化 redisTemplate 使存储的键值为 json 字符串
*/
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory){
// 创建RedisTemplate对象
RedisTemplate<String, Object> template = new RedisTemplate<>();
// 设置连接工厂
template.setConnectionFactory(connectionFactory);
// 创建JSON序列化工具
GenericJackson2JsonRedisSerializer jsonRedisSerializer =
new GenericJackson2JsonRedisSerializer();
// 设置Key的序列化
template.setKeySerializer(RedisSerializer.string());
template.setHashKeySerializer(RedisSerializer.string());
// 设置Value的序列化
template.setValueSerializer(jsonRedisSerializer);
template.setHashValueSerializer(jsonRedisSerializer);
// 返回
return template;
}
}

image

2.4 进行测试

这个 redisTemplate 不知道为什么只能用 @Resource 进行注入,使用

// @Autowired
// @Qualifier(value = "redisTemplate")

注入失败

@Resource
private RedisTemplate<String,Student> redisTemplate;
@Test
void setObject(){
Student student = new Student(1, "张三", 183);
redisTemplate.opsForValue().set("user:stu",student,60,TimeUnit.SECONDS);
Student student1 = redisTemplate.opsForValue().get("user:stu");
System.out.println(student1);
}
@Test
void setList(){
ListOperations<String, Student> ops = redisTemplate.opsForList();
Student s1 = new Student(1, "张三", 18);
Student s2 = new Student(2, "张三2", 18);
Student s3 = new Student(3, "张三3", 18);
ops.rightPush("stu:List",s1);
ops.rightPushAll("stu:List",s2,s3);
List<Student> range = ops.range("stu:List", 0, -1);
System.out.println(range);
}

image

image

2.5 使用 StringRedisTemplate

这个自带序列化

@Autowired
private StringRedisTemplate stringRedisTemplate;
@Test
void set(){
ValueOperations<String, String> ops = stringRedisTemplate.opsForValue();
ops.set("str:name1","ppp");
ops.set("str:name2","y");
ops.set("str:name3","b");
}

image

posted @   进击的乌拉  阅读(96)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示