从.Net到Java学习第四篇——spring boot+redis

从.Net到Java学习第一篇——开篇 从.Net到Java学习第二篇——IDEA and start spring boot 从.Net到Java学习第三篇——spring boot+mybatis+mysql 接上一篇,本篇使用到的框架redis、FastJSON。 环境准备 安装redis,下图是我本机的redis绿色版,你可以网上自行下载安装,如果不知道如何怎么操作,可以移步到我的另一篇文章:ASP.NET Redis 开发 以管理员身份打开CMD窗口: 复制代码 C:\Users\zouqj>e: E:\>cd E:\Redis-x64-3.2.100 E:\Redis-x64-3.2.100>redis-server --service-install redis.windows.conf --loglevel verbose --service-name redis --port 6379 复制代码 运行之后,记得启动redis服务,我这里redis没有设置密码。 启动服务命令:net start redis 关于FastJSON框架的使用呢可以参考文章:高性能JSON框架之FastJson的简单使用 修改pom.xml,添加redis的依赖 复制代码 org.springframework.boot spring-boot-starter-redis 1.3.8.RELEASE com.alibaba fastjson 1.1.23 复制代码 修改项目配置文件,添加如下配置节点 复制代码 redis: database: 0 host: 127.0.0.1 port: 6379 pool: max-active: 100 max-idle: 10 max-wait: 100000 timeout: 0 复制代码 最终配置如下: 新建一个redis的配置类RedisConfig,因为是配置类,所以要在类上面添加注解@Configuration @EnableAutoConfiguration注解我们看下它的源码,发现它是一个组合注解 复制代码 @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @AutoConfigurationPackage @Import({EnableAutoConfigurationImportSelector.class}) public @interface EnableAutoConfiguration { String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration"; Class[] exclude() default {}; String[] excludeName() default {}; } 复制代码 @EnableAutoConfiguration注解大致处理流程就是: 1、先去扫描已经被@Component所注释的类,当然会先判断有没有@Condition相关的注解。 2、然后递归的取扫描该类中的@ImportResource,@PropertySource,@ComponentScan,@Bean,@Import。一直处理完。 参考:@EnableAutoConfiguration 配置解释 复制代码 @Configuration @EnableAutoConfiguration public class RedisConfig { @Bean @ConfigurationProperties(prefix = "spring.redis.pool") public JedisPoolConfig getRedisConfig() { JedisPoolConfig config = new JedisPoolConfig(); return config; } @Bean @ConfigurationProperties(prefix = "spring.redis") public JedisConnectionFactory getConnectionFactory() { JedisConnectionFactory factory = new JedisConnectionFactory(); factory.setUsePool(true); JedisPoolConfig config = getRedisConfig(); factory.setPoolConfig(config); return factory; } @Bean public RedisTemplate getRedisTemplate() { JedisConnectionFactory factory = getConnectionFactory(); RedisTemplate template = new StringRedisTemplate(factory); return template; } } 复制代码 添加一个redis的接口服务RedisService 复制代码 package com.yujie.service; public interface RedisService { /** * set存数据 * @param key * @param value * @return */ boolean set(String key, String value); /** * get获取数据 * @param key * @return */ String get(String key); /** * 设置有效天数 * @param key * @param expire * @return */ boolean expire(String key, long expire); /** * 移除数据 * @param key * @return */ boolean remove(String key); } 复制代码 添加redis实现类RedisServiceImpl,注意下面代码中标红了的代码,这里设置redis的key和value以字符串的方式进行存储,如果不配置的话,默认是以16进制的形式进行存储,到时候我们读取的时候,就会看着很乱。 复制代码 @Service("redisService") public class RedisServiceImpl implements RedisService { @Resource private RedisTemplate redisTemplate; @Override public boolean set(final String key, final String value) { boolean result = redisTemplate.execute(new RedisCallback() { @Override public Boolean doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer serializer = redisTemplate.getStringSerializer(); connection.set(serializer.serialize(key), serializer.serialize(value)); return true; } }); return result; } @Override public String get(final String key) { String result = redisTemplate.execute(new RedisCallback() { @Override public String doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer serializer = redisTemplate.getStringSerializer(); byte[] value = connection.get(serializer.serialize(key)); return serializer.deserialize(value); } }); return result; } @Override public boolean expire(final String key, long expire) { return redisTemplate.expire(key, expire, TimeUnit.SECONDS); } @Override public boolean remove(final String key) { boolean result = redisTemplate.execute(new RedisCallback() { @Override public Boolean doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer serializer = redisTemplate.getStringSerializer(); connection.del(key.getBytes()); return true; } }); return result; } } 复制代码 由于项目中引入了spring-boot-starter-test的依赖,也就是集成了spring boot的单元测试框架。给redis实现类,添加单元测试,将光标移动到RedisService接口位置处,然后按Alt+Enter,如下图所示: 全选所有方法 在model包中,添加一个实体类Person 复制代码 public class Person { private String name; private String sex; public Person() { } public Person(String name, String sex) { this.name = name; this.sex = sex; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } } 复制代码 接下来,我们再修改一下单元测试 View Code 我们发现,在单元测试类上面自动添加了2个注解,@SpringBootTest和@RunWith(SpringRunner.class) @SpringBootTest注解是SpringBoot自1.4.0版本开始引入的一个用于测试的注解。 @RunWith就是一个运行器 @RunWith(SpringRunner.class)就是指用SpringRunner来运行 运行单元测试: 查看redis中的结果,这里用到一个可视化的redis管理工具:RedisDesktopManager 博客地址: http://www.cnblogs.com/jiekzou/ 博客版权: 本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。 如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步! 再次感谢您耐心的读完本篇文章。 .net-QQ群4:612347965 java-QQ群:805741535 我的拙作《ASP.NET MVC企业级实战》已经出版,希望大家多多支持!https://www.cnblogs.com/jiekzou/p/9205117.html
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信