您现在的位置是:首页 > 文章详情

springboot + redis(单机版)

日期:2018-08-17点击:297

本次和大家分享的是在springboot集成使用redis,这里使用的是redis的jedis客户端,如下添加依赖

<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency>

然后需要redis的相关配置(这里我的redis密码是空)

spring: redis: single: 192.168.146.28:6378 jedis: pool: max-idle: 8 max-active: 8 max-wait: 3000 timeout: 3000 password:

这是redis的一般配置,具体调优可以设置这些参数,下面在JedisConfig类中读取这些设置

 @Value("${spring.redis.single}") private String strSingleNode; @Value("${spring.redis.jedis.pool.max-idle}") private Integer maxIdle; @Value("${spring.redis.jedis.pool.max-active}") private Integer maxActive; @Value("${spring.redis.jedis.pool.max-wait}") private Integer maxAWait; @Value("${spring.redis.timeout}") private Integer timeout; @Value("${spring.redis.password}") private String password;

有上面的配置,就需要有代码里面设置下,这里创建一个返回JedisPoolConfig的方法

 /** * jedis配置 * * @return */ public JedisPoolConfig getJedisPoolConfig() { JedisPoolConfig config = new JedisPoolConfig(); config.setMaxIdle(maxIdle); #最大空闲数 config.setMaxWaitMillis(maxAWait); #最大等待时间 config.setMaxTotal(maxActive); #最大连接数 return config; }

有了配置,接下来就创建JedisPool,这里把JedisPool托管到spring中

 /** * 获取jedispool * * @return */ @Bean public JedisPool getJedisPool() { JedisPoolConfig config = getJedisPoolConfig(); System.out.println("strSingleNode:" + this.strSingleNode); String[] nodeArr = this.strSingleNode.split(":"); JedisPool jedisPool = null; if (this.password.isEmpty()) { jedisPool = new JedisPool( config, nodeArr[0], Integer.valueOf(nodeArr[1]), this.timeout); } else { jedisPool = new JedisPool( config, nodeArr[0], Integer.valueOf(nodeArr[1]), this.timeout, this.password); } return jedisPool; }

上面简单区分了无密码的情况,到此jedis的配置和连接池就基本搭建完了,下面就是封装使用的方法,这里以set和get为例;首先创建个JedisComponent组件,代码如下

/** * Created by Administrator on 2018/8/18. */ @Component public class JedisComponent { @Autowired JedisPool jedisPool; public boolean set(String key, String val) { Jedis jedis = null; try { jedis = jedisPool.getResource(); return jedis.set(key, val).equalsIgnoreCase("OK"); } finally { if (jedis != null) { jedis.close(); } } } public <T> boolean set(String key, T t) { String strJson = JacksonConvert.serilize(t); if (strJson.isEmpty()) { return false; } return this.set(key, strJson); } public String get(String key) { Jedis jedis = null; try { jedis = jedisPool.getResource(); return jedis.get(key); } finally { if (jedis != null) { jedis.close(); } } } public <T> T get(String key, Class<T> tClass) { String strJson = this.get(key); return JacksonConvert.deserilize(strJson, tClass); } }

有了对jedis的调用封装,我们在Controller层的测试用例如下

 @Autowired JedisComponent jedis; @GetMapping("/setJedis/{val}") public boolean setJedis(@PathVariable String val) { return jedis.set("token", val); } @GetMapping("/getJedis") public String getJedis() { return jedis.get("token"); }

运行set和get的接口效果如
1
2

原文链接:https://yq.aliyun.com/articles/626158
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章