第一步:创建一个spring boot项目
第二步:pom导入redis相关依赖
<!--reids依赖--> <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>
第三步:配置application.yml文件
spring:redis:host: 127.0.0.1 #ip地址port: 6379 #端口号password: 123456 #如果没有密码,可以不写这一行 # 配置连接池信息lettuce:pool:max-active: 8 # 连接池最大连接数(使用负值表示没有限制)max-idle: 8 # 连接池中的最大空闲连接min-idle: 0 # 连接池中的最小空闲连接max-wait: 100ms # 连接池最大阻塞等待时间(使用负值表示没有限制)
第四步:测试
注意:测试前需要开启redis
@SpringBootTest
class RedisDemoApplicationTests {//注入RedisTemplate@Autowiredprivate RedisTemplate redisTemplate;@Testvoid contextLoads() {//写入 一条String数据redisTemplate.opsForValue().set("name","张三");//通过key值获取数据Object name = redisTemplate.opsForValue().get("name");System.out.println(name);}
}
输出结果:
张三
第五步:存在的问题
虽然在测试中控制台输出的是“张三”。
但我们从redis图形化工具中查看会发现我们存入的key和value不是我们想要存入的:
key(name):
value(张三):"퀅t\u0000\u0006张三"
这是因为RedisTemplate中默认的序列化工具JdkSerializationRedisSerializer,所以会出现以上问题
解决办法:
写一个redis的配置类:
@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){//创建RedisTemplate对象RedisTemplate<String,Object> template=new RedisTemplate<>();//设置连接工厂template.setConnectionFactory(redisConnectionFactory);//创建json序列化工具GenericJackson2JsonRedisSerializer jsonRedisSerializer=new GenericJackson2JsonRedisSerializer();//设置key的序列化为Stringtemplate.setKeySerializer(RedisSerializer.string());template.setHashKeySerializer(RedisSerializer.string());//设置value的序列化template.setValueSerializer(jsonRedisSerializer);template.setHashValueSerializer(jsonRedisSerializer);//返回return template;}}
然后只需要将注入的RedisTemplate改成下面这样就行了:
@SpringBootTest
class RedisDemoApplicationTests {//注入RedisTemplate@Autowiredprivate RedisTemplate<String,Object> redisTemplate;@Testvoid contextLoads() {//写入 一条String数据redisTemplate.opsForValue().set("name","张三");//通过key值获取数据Object name = redisTemplate.opsForValue().get("name");System.out.println(name);}
}
注意:有的需要导入Jackson依赖才可以
以上主要就是将我们要存的key和value的序列化工具改变了。