<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> <version>RELEASE</version> </dependency>
# Redis数据库索引(默认为0) spring.redis.database= 0 # Redis服务器地址 spring.redis.host= ip # Redis服务器链接端口 spring.redis.port=6379 # Redis服务器链接密码(默认为空) spring.redis.password= password # 链接池最大链接数(使用负值表示没有限制) spring.redis.pool.max-active=8 # 链接池最大阻塞等待时间(使用负值表示没有限制) spring.redis.pool.max-wait=-1 # 链接池中的最大空闲链接 spring.redis.pool.max-idle=8 # 链接池中的最小空闲链接 spring.redis.pool.min-idle=0 # 链接超时时间(毫秒) spring.redis.timeout=0
此次主要的问题是,在这过程当中能够操做Redis数据库 ,可是在登录服务器的时候用redis-cli查看key的时候找不到相对应的key,而是出现了如下的这种状况redis
那么在存key的时候为何会出现这种"乱码"的状况呢?spring
其实这里的"乱码"并非真的乱码,那是由于咱们还缺乏了一点配置,那就是对Redis存key或者value的时候,没有配置字符串序列化。没有配置的话是默认使用jdk自己的序列化的,点进去RedisTemplate里面去看,能够看到数据库
由于spring操做redis是在jedis客户端基础上进行的,而jedis客户端与redis交互的时候协议中定义是用byte类型交互,看到spring-data-redis中RedisTemplate<K, V>在操做的时候k,v是泛型对象,而不是byte[]类型的,这样致使的一个问题就是,若是不对RedisTemplate进行设置,spring会默认采用defaultSerializer = new JdkSerializationRedisSerializer();这个方法来对key、value进行序列化操做,使用默认的jdk序列化。这样子存到Redis里面,在服务器上登录redis-cli查看key的时候找不到咱们存储的那个key,而是加了一堆乱码的key,因此在这里我简单的作了一下配置,将存储的key/value设置成string类型:json
其实在这里应该先提早利用springboot的自动装配,先将这些东西配置好,这些配置在网上能够找到,springboot集成redis配置springboot
@Configuration @EnableAutoConfiguration public class RedisConfig { @Bean public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) { StringRedisTemplate redisTemplate = new StringRedisTemplate(factory); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); //设置完这个能够直接将对象以json格式存入redis中,可是取出来的时候要用JSON.parseArray(Json.toJsonString(object),Object.class)解析一下 redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); //调用后完成设置 redisTemplate.afterPropertiesSet(); return redisTemplate; }
其实不用配置这些,Redis也能够正常使用的,不过为了防止往后出现问题方便排查,仍是花一点点时间将这些配置加上吧~服务器