博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring boot 自学笔记(四) Redis集成—Jedis
阅读量:5321 次
发布时间:2019-06-14

本文共 4215 字,大约阅读时间需要 14 分钟。

上一篇笔记Reddis集成,操作Redis使用的是RedisTemplate,但实际中还是有一大部分人习惯使用JedisPool和Jedis来操作Redis, 下面使用Jedis集成示例。

 

修改RedisConfig类如下:

 

[java]   
  1. package com.vic.config;  
  2.   
  3. import org.apache.log4j.Logger;  
  4. import org.springframework.boot.autoconfigure.EnableAutoConfiguration;  
  5. import org.springframework.boot.context.properties.ConfigurationProperties;  
  6. import org.springframework.context.annotation.Bean;  
  7. import org.springframework.context.annotation.Configuration;  
  8.   
  9. import redis.clients.jedis.JedisPool;  
  10. import redis.clients.jedis.JedisPoolConfig;  
  11.   
  12. /** 
  13.  *  
  14.  * @author vic 
  15.  * @desc redis config bean 
  16.  * 
  17.  */  
  18. @Configuration  
  19. @EnableAutoConfiguration  
  20. @ConfigurationProperties(prefix = "spring.redis", locations = "classpath:application.properties")  
  21. public class RedisConfig {  
  22.   
  23.     private static Logger logger = Logger.getLogger(RedisConfig.class);  
  24.       
  25.     private String hostName;  
  26.   
  27.     private int port;  
  28.   
  29.     private String password;  
  30.   
  31.     private int timeout;  
  32.       
  33.     @Bean  
  34.     public JedisPoolConfig getRedisConfig(){  
  35.         JedisPoolConfig config = new JedisPoolConfig();  
  36.         return config;  
  37.     }  
  38.       
  39.     @Bean  
  40.     public JedisPool getJedisPool(){  
  41.         JedisPoolConfig config = getRedisConfig();  
  42.         JedisPool pool = new JedisPool(config,hostName,port,timeout,password);  
  43.         logger.info("init JredisPool ...");  
  44.         return pool;  
  45.     }  
  46.   
  47.     public String getHostName() {  
  48.         return hostName;  
  49.     }  
  50.   
  51.     public void setHostName(String hostName) {  
  52.         this.hostName = hostName;  
  53.     }  
  54.   
  55.     public int getPort() {  
  56.         return port;  
  57.     }  
  58.   
  59.     public void setPort(int port) {  
  60.         this.port = port;  
  61.     }  
  62.   
  63.     public String getPassword() {  
  64.         return password;  
  65.     }  
  66.   
  67.     public void setPassword(String password) {  
  68.         this.password = password;  
  69.     }  
  70.   
  71.     public int getTimeout() {  
  72.         return timeout;  
  73.     }  
  74.   
  75.     public void setTimeout(int timeout) {  
  76.         this.timeout = timeout;  
  77.     }  
  78. }  
因为JedisPool实例化对象,是将host,password等参数通过构造传入,所以在这里将整个RedisConfig定义为一个配置类,定义host,password等配置属性,通过spring boot属性文件自动注入。

 

接下来看看Service中如何使用:

修改IRedisService接口:

 

 

[java]   
  1. /** 
  2.  *  
  3.  * @author vic 
  4.  * @desc redis service 
  5.  */  
  6. public interface IRedisService {  
  7.   
  8.     public Jedis getResource();  
  9.   
  10.     public void returnResource(Jedis jedis);  
  11.   
  12.     public void set(String key, String value);  
  13.   
  14.     public String get(String key);  
  15.   
  16. }  

 

RedisService实现类代码:

 

[java]   
  1. package com.vic.service.impl;  
  2.   
  3. import org.apache.log4j.Logger;  
  4. import org.springframework.beans.factory.annotation.Autowired;  
  5. import org.springframework.stereotype.Service;  
  6.   
  7. import com.vic.service.IRedisService;  
  8.   
  9. import redis.clients.jedis.Jedis;  
  10. import redis.clients.jedis.JedisPool;  
  11.   
  12. /** 
  13.  *  
  14.  * @author vic 
  15.  * @desc resdis service 
  16.  * 
  17.  */  
  18. @Service  
  19. public class RedisServiceImpl implements IRedisService {  
  20.       
  21.     private static Logger logger = Logger.getLogger(RedisServiceImpl.class);  
  22.   
  23.     @Autowired  
  24.     private JedisPool jedisPool;  
  25.       
  26.     @Override  
  27.     public Jedis getResource() {  
  28.         return jedisPool.getResource();  
  29.     }  
  30.   
  31.     @SuppressWarnings("deprecation")  
  32.     @Override  
  33.     public void returnResource(Jedis jedis) {  
  34.         if(jedis != null){  
  35.             jedisPool.returnResourceObject(jedis);  
  36.         }  
  37.     }  
  38.   
  39.     @Override  
  40.     public void set(String key, String value) {  
  41.         Jedis jedis=null;  
  42.         try{  
  43.             jedis = getResource();  
  44.             jedis.set(key, value);  
  45.             logger.info("Redis set success - " + key + ", value:" + value);  
  46.         } catch (Exception e) {  
  47.             e.printStackTrace();  
  48.             logger.error("Redis set error: "+ e.getMessage() +" - " + key + ", value:" + value);  
  49.         }finally{  
  50.             returnResource(jedis);  
  51.         }  
  52.     }  
  53.       
  54.     @Override  
  55.     public String get(String key) {  
  56.         String result = null;  
  57.         Jedis jedis=null;  
  58.         try{  
  59.             jedis = getResource();  
  60.             result = jedis.get(key);  
  61.             logger.info("Redis get success - " + key + ", value:" + result);  
  62.         } catch (Exception e) {  
  63.             e.printStackTrace();  
  64.             logger.error("Redis set error: "+ e.getMessage() +" - " + key + ", value:" + result);  
  65.         }finally{  
  66.             returnResource(jedis);  
  67.         }  
  68.         return result;  
  69.     }  
  70.   
  71. }  
JedisPool对象使用自动注入,手动获取Jedis对象进行Redis操作,ExampleController进行测试:
[java]   
  1. @RequestMapping("/redis/set")  
  2. public ResponseModal redisSet(@RequestParam("value")String value){  
  3.     redisService.set("name", value);  
  4.     return new ResponseModal(200, true, "success", null);  
  5. }  
  6.   
  7. @RequestMapping("/redis/get")  
  8. public ResponseModal redisGet(){  
  9.     String name = redisService.get("name");  
  10.     return new ResponseModal(200, true,"success",name);  
  11. }  

 

 

测试URL:http://localhost:8080/redis/set?value=vic  响应结果:

 

{"code":200,"success":true,"message":"success","response":null}
测试URL:http://localhost:8080/redis/get   响应结果:

 

 

{"code":200,"success":true,"message":"success","response":"vic"}

 

 

转载于:https://www.cnblogs.com/williamjie/p/9121908.html

你可能感兴趣的文章
ant构建项目迁移到gradle_从 Gradle 使用 Ant
查看>>
mysql存储过程_MySql存储过程与函数详解
查看>>
会声会影2019渲染闪退_使用会声会影的五大理由,赶紧来看!
查看>>
js事件点击第二次才触发是为什么_JS防抖和节流傻傻分不清楚
查看>>
php mysql管理_PHP简单mysql管理工具,支持执行多条mysql语句!
查看>>
mysql客户端反向映射entity_Mysql服务端反向读取客户端的任意文件
查看>>
hbase 如何导入到mysql_hbase 的数据 怎么导出到 一个文件或者mysql里面
查看>>
html存入mysql数据库_html,jquery,ajax,servlet,mysql实现前端数据写入数据库
查看>>
perf mysql_MySQL性能分析工具(perf和Flame Graphs)
查看>>
分布式 mysql amoeba_用Amoeba构架MySQL分布式数据库环境
查看>>
mysql 数据库已运行时长_查看 MySQL 已经运行多长时间的方法
查看>>
shell 同步mysql数据库_利用shell脚本实现对mysql数据库的备份
查看>>
mysql mediumint 长度_mysql中的MEDIUMINT 最大可以是多少
查看>>
centos7怎么登录到mysql数据库_centos7安装 mysql数据库
查看>>
mysql数据为空怎么显示0_mySQL 统计数据时,数据为空的显示为0
查看>>
zimbra mysql stopping_ZIMBRA命令行方式常用的操作
查看>>
后台启动redis_Linux安装redis
查看>>
霍尼韦尔oh4502使用说明_霍尼韦尔变送器选型资料
查看>>
看拼音写词语生成器_期末复习:统编语文1~6年级上册看拼音写词语练习(可下载打印)...
查看>>
mysql least用法_MySQL LEAST()函数的问题不会返回结果
查看>>