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>
2.2 写配置信息
spring: redis: database: 3 host: localhost port: 16379 password: Zz@.789++
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; } }
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); }
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"); }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性