赞
踩
什么是jedis
是官方推荐的java连接开发工具!使用java操作Redis中间件,如果要用java操作redis,那么一定要对jedis十分熟悉。
jedis的使用:
1.导入jedis依赖
Maven Repository: redis.clients » jedis » 4.1.1 (mvnrepository.com)
2.编码测试
jedis.close();
说明在springBoot2.x之后,原来使用的jedis被替换为了lettuce
jedis:采用的直连,多个线程操作的话,是不安全的,如果想要避免不安全的,使用jedis pool连接池,更像BIO
lettuce:采用netty,实例可以在多个线程中进行共享,不存在线程不安全的情况!可以减少线程数据,效率更高,更像NIO
源码分析:
- @Bean
- @ConditionalOnMissingBean(
- name = {"redisTemplate"}
- )// 我们可以自己定义一个redisTemplate来替换这个默认的
- @ConditionalOnSingleCandidate(RedisConnectionFactory.class)
- public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
- //默认的RedisTemplate 没有过多的设置,redis对象都是需要序列化
- //两个泛型都是object,object的类型,我们后使用需要强制转换<String,Object>
- RedisTemplate<Object, Object> template = new RedisTemplate();
- template.setConnectionFactory(redisConnectionFactory);
- return template;
- }
-
-
- //由于String是redis是最常用的类型,所以说单独提出来了一个bean
- @Bean
- @ConditionalOnMissingBean
- @ConditionalOnSingleCandidate(RedisConnectionFactory.class)
- public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
- return new StringRedisTemplate(redisConnectionFactory);
- }
整合测试:
1.导入依赖
2.配置连接
3.测试
自定义RedisTemplate
- @Configuration
- public class RedisConfig {
-
- //编写我们自己的redisTemolate
- @Bean
- public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)throws UnknownHostException {
- //为了开发方便,一般直接用<String,Object>
- RedisTemplate<String, Object> template = new RedisTemplate();
- template.setConnectionFactory(redisConnectionFactory);
-
- //使用json的方式序列化所有对象
- Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
- ObjectMapper objectMapper = new ObjectMapper();
- objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
- objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
- jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
-
- //创建string的序列化器
- StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
-
- //设置所有的key都使用string类型的序列化器
- template.setKeySerializer(stringRedisSerializer);
-
- //设置所有的hash类型的key也是用string类型的序列化器
- template.setHashKeySerializer(stringRedisSerializer);
-
- //设置hash类型的value使用json序列化器
- template.setHashValueSerializer(jackson2JsonRedisSerializer);
-
- //设置所有的value都使用json序列化器
- template.setValueSerializer(jackson2JsonRedisSerializer);
-
- template.afterPropertiesSet();
-
- return template;
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。