一 前言
一篇关于springboot集成redis的小知识,如果有学过redis基础篇的读者很容易看懂。
二 集成配置
2.1 依赖
springboot 2.1.1 版本
复制代码 org.springframework.boot spring-boot-starter-data-redisorg.springframework.boot spring-boot-starter-testtest org.springframework.boot spring-boot-starter-web
2.2 配置类
使用 自定义的配置 替换 JdkSerializationRedisSerializer, 否则序列化进 redis 会显示为特殊字符;
查阅 RedisReactiveAutoConfiguration 类可以查看 reactiveRedisTemplate 装配过程‘;
查阅 RedisAutoConfiguration 类可以查看 redisTemplate 装配过程‘;
/** * @Author lsc *redis配置 替换默认的jdk序列化机制
*/ @Configuration public class RedisConfig { @Bean public RedisTemplateredisTemplate(RedisConnectionFactory connectionFactory) { // 创建redisTemplate RedisTemplate redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(connectionFactory); // 使用Jackson2JsonRedisSerialize替换默认序列化 Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(objectMapper); // key采用String的序列化方式 redisTemplate.setKeySerializer(new StringRedisSerializer()); // value序列化方式采用jackson redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); // hash的key也采用String的序列化方式 redisTemplate.setHashKeySerializer(new StringRedisSerializer()); // hash的value序列化方式采用jackson redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); redisTemplate.afterPropertiesSet(); return redisTemplate; } } 复制代码
2.3 application.yml
redis 的 连接属性配置和连接池配置;
server: port: 9000 spring: redis: # Redis服务器地址 host: localhost #Redis服务器连接端口 port: 6379 #password: # Redis数据库索引(默认为0) database: 1 # 连接超时时间(毫秒) timeout: 5000 jedis: pool: #连接池最大连接数(使用负值表示没有限制) max-active: 100 # 连接池中的最小空闲连接 max-idle: 10 # 连接池最大阻塞等待时间(使用负值表示没有限制) max-wait: 100000 复制代码
三 数据类型测试
3.1 String *** 作
@Autowired RedisTemplateredisTemplate; // string 入库 @Test public void testForValue1(){ String key = "zszxz"; String value = "知识追寻者"; redisTemplate.opsForValue().set(key, value); } // string 出库 @Test public void testForValue2(){ String key = "zszxz"; Object value = redisTemplate.opsForValue().get(key); // 知识追寻者 System.out.println(value); } // string key过期时间入库 @Test public void testForValue3(){ String key = "today"; String value = "周六"; long time = 60; redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS); } 复制代码
3.2 key *** 作
@Autowired RedisTemplateredisTemplate; // 测试 key 是否存在 @Test public void test1(){ String key = "zszxz"; Boolean exist = redisTemplate.hasKey(key); // true System.out.println(exist); } // 设置 key 过期时间 @Test public void test2(){ String key = "zszxz"; long time = 60; redisTemplate.expire(key, time, TimeUnit.SECONDS); } // 获取key过期时间 @Test public void test3(){ String key = "zszxz"; Long expire = redisTemplate.getExpire(key, TimeUnit.SECONDS); // 7 System.out.println(expire); } // 删除key @Test public void test4(){ String key = "zszxz"; redisTemplate.delete(key); } 复制代码
3.3 散列 *** 作
@Autowired RedisTemplateredisTemplate; // 放入一个 hash ( key value ) @Test public void test1(){ String key = "zszxz"; String item = "name"; String value = "知识追寻者"; redisTemplate.opsForHash().put(key, item, value); } // 向hash中存放一个map @Test public void test2(){ String key = "feature"; Map map = new HashMap<>(); map.put("name", "知识追寻者"); map.put("age", "18"); redisTemplate.opsForHash().putAll(key, map); } // 获取一个hash 的 所有key-value @Test public void test3(){ String key = "feature"; Map
3.4 列表 *** 作
@Autowired RedisTemplateredisTemplate; @Test public void test(){ } // 列表右推入 @Test public void test1(){ String key = "zszxz"; String value = "知识追寻者"; redisTemplate.opsForList().rightPush(key, value); } // 列表左推入 @Test public void test2(){ String key = "zszxz"; String value = "晴雨天"; redisTemplate.opsForList().leftPush(key, value); } // 列表左d出 @Test public void test3(){ String key = "zszxz"; Object value = redisTemplate.opsForList().leftPop(key); // 晴雨天 System.out.println(value); } // 列表右d出 @Test public void test4(){ String key = "zszxz"; Object value = redisTemplate.opsForList().rightPop(key); // 知识追寻者 System.out.println(value); } // 将list右推入列表 @Test public void test5(){ ArrayList
3.5 set *** 作
@Autowired RedisTemplateredisTemplate; // set 中存储值 @Test public void test1(){ String key = "zszxz"; String value1 = "晴雨天"; String value2 = "公众号:知识追寻者"; redisTemplate.opsForSet().add(key, value1, value2); } // 从 set 中取值 @Test public void test2(){ String key = "zszxz"; Set
总结
如果你觉得此文对你有一丁点帮助,点个赞。或者可以加入我的开发交流群:1025263163相互学习,我们会有专业的技术答疑解惑
如果你觉得这篇文章对你有点用的话,麻烦请给我们的开源项目点点star: http://github.crmeb.net/u/defu 不胜感激 !
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)