初识Redis------(二)

通过上面一些笔记的介绍我们可以自己动手去集成Redis没有什么难度的

还有spring Boot官方提供了Spring-Data-redisStarter POM

有兴趣的可以查看下这篇资料

http://blog.didispace.com/springbootredis/?utm_source=tuicool&utm_medium=referral


手动集成Redis

pom.xml 

[html]  view plain  copy
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.     <modelVersion>4.0.0</modelVersion>  
  4.     <groupId>com.ibigsea</groupId>  
  5.     <artifactId>springboot-redis-demo</artifactId>  
  6.     <version>0.0.1-SNAPSHOT</version>  
  7.   
  8.     <properties>  
  9.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  10.         <boot.version>1.3.5.RELEASE</boot.version>  
  11.     </properties>  
  12.   
  13.     <dependencies>  
  14.         <dependency>  
  15.             <groupId>org.springframework.boot</groupId>  
  16.             <artifactId>spring-boot-starter-web</artifactId>  
  17.             <version>${boot.version}</version>  
  18.         </dependency>  
  19.         <dependency>  
  20.             <groupId>org.springframework.boot</groupId>  
  21.             <artifactId>spring-boot-starter-test</artifactId>  
  22.             <version>${boot.version}</version>  
  23.             <scope>test</scope>  
  24.         </dependency>  
  25.         <dependency>  
  26.             <groupId>redis.clients</groupId>  
  27.             <artifactId>jedis</artifactId>  
  28.             <version>2.8.2</version>  
  29.         </dependency>  
  30.     </dependencies>  
  31.   
  32. </project>  

整个项目的结构图是这样的


RedisConfiguration.Java

[java]  view plain  copy
  1. package com.ibigsea.springboot_redis_demo.config;  
  2.   
  3. import org.springframework.beans.factory.annotation.Autowired;  
  4. import org.springframework.beans.factory.annotation.Qualifier;  
  5. import org.springframework.beans.factory.annotation.Value;  
  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. @Configuration  
  13. public class RedisConfiguration {  
  14.       
  15.     @Bean(name= "jedis.pool")  
  16.     @Autowired  
  17.     public JedisPool jedisPool(@Qualifier("jedis.pool.config") JedisPoolConfig config,   
  18.                 @Value("${jedis.pool.host}")String host,   
  19.                 @Value("${jedis.pool.port}")int port) {  
  20.         return new JedisPool(config, host, port);  
  21.     }  
  22.       
  23.     @Bean(name= "jedis.pool.config")  
  24.     public JedisPoolConfig jedisPoolConfig (@Value("${jedis.pool.config.maxTotal}")int maxTotal,  
  25.                                 @Value("${jedis.pool.config.maxIdle}")int maxIdle,  
  26.                                 @Value("${jedis.pool.config.maxWaitMillis}")int maxWaitMillis) {  
  27.         JedisPoolConfig config = new JedisPoolConfig();  
  28.         config.setMaxTotal(maxTotal);  
  29.         config.setMaxIdle(maxIdle);  
  30.         config.setMaxWaitMillis(maxWaitMillis);  
  31.         return config;  
  32.     }  
  33.       
  34. }  

RedisClient.java

[java]  view plain  copy
  1. package com.ibigsea.springboot_redis_demo.config;  
  2.   
  3. import org.springframework.beans.factory.annotation.Autowired;  
  4. import org.springframework.stereotype.Component;  
  5.   
  6. import redis.clients.jedis.Jedis;  
  7. import redis.clients.jedis.JedisPool;  
  8.   
  9. /** 
  10.  * 就一个小Demo 随便写下 
  11.  * @author bigsea 
  12.  * 
  13.  */  
  14. @Component  
  15. public class RedisClient {  
  16.   
  17.     @Autowired  
  18.     private JedisPool jedisPool;  
  19.       
  20.     public void set(String key, String value) throws Exception {  
  21.         Jedis jedis = null;  
  22.         try {  
  23.             jedis = jedisPool.getResource();  
  24.             jedis.set(key, value);  
  25.         } finally {  
  26.             //返还到连接池  
  27.             jedis.close();  
  28.         }  
  29.     }  
  30.       
  31.     public String get(String key) throws Exception  {  
  32.   
  33.         Jedis jedis = null;  
  34.         try {  
  35.             jedis = jedisPool.getResource();  
  36.             return jedis.get(key);  
  37.         } finally {  
  38.             //返还到连接池  
  39.             jedis.close();  
  40.         }  
  41.     }  
  42.       
  43. }  

App.java

[java]  view plain  copy
  1. package com.ibigsea.springboot_redis_demo;  
  2.   
  3. import org.springframework.beans.factory.annotation.Autowired;  
  4. import org.springframework.boot.SpringApplication;  
  5. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  6. import org.springframework.web.bind.annotation.RequestMapping;  
  7. import org.springframework.web.bind.annotation.RestController;  
  8.   
  9. import com.ibigsea.springboot_redis_demo.config.RedisClient;  
  10.   
  11. /** 
  12.  * 是Spring Boot项目的核心注解,主要是开启自动配置 
  13.  */  
  14. @SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan  
  15. @RestController  
  16. public class App {  
  17.       
  18.     @Autowired  
  19.     private RedisClient redisClinet;  
  20.       
  21.     public static void main(String[] args) {  
  22.         SpringApplication.run(App.class, args);  
  23.     }  
  24.       
  25.       
  26.     @RequestMapping("/set")  
  27.     public String set(String key, String value) throws Exception{  
  28.         redisClinet.set(key, value);  
  29.         return "success";  
  30.     }  
  31.       
  32.     @RequestMapping("/get")  
  33.     public String get(String key) throws Exception {  
  34.         return redisClinet.get(key);  
  35.     }  
  36.       
  37. }  

application.yml

[html]  view plain  copy
  1. jedis :  
  2.   pool :  
  3.     host : 127.0.0.1  
  4.     port : 6379  
  5.     password: 123456
  6.     config :  
  7.       maxTotal: 100  
  8.       maxIdle: 10  
  9.       maxWaitMillis : 100000  
  10.   
  11. server :  
  12.   port : 8082  

运行结果:

 





实现自己的jedis-spring-boot-starter

一些自动配置的东西这里面有讲

http://blog.csdn.net/a67474506/article/details/52013634

 

首先我们创建一个jedis-spring-boot-starter

pom.xml

[html]  view plain  copy
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.     <modelVersion>4.0.0</modelVersion>  
  4.     <groupId>com.ibigsea</groupId>  
  5.     <artifactId>jedis-spring-boot-starter</artifactId>  
  6.     <version>1.0-SNAPSHOT</version>  
  7.       
  8.     <properties>  
  9.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  10.         <boot.version>1.3.5.RELEASE</boot.version>  
  11.     </properties>  
  12.       
  13.     <dependencies>  
  14.         <dependency>  
  15.             <groupId>org.springframework.boot</groupId>  
  16.             <artifactId>spring-boot</artifactId>  
  17.             <version>${boot.version}</version>  
  18.         </dependency>  
  19.         <dependency>  
  20.             <groupId>org.springframework.boot</groupId>  
  21.             <artifactId>spring-boot-autoconfigure</artifactId>  
  22.             <version>${boot.version}</version>  
  23.         </dependency>  
  24.         <dependency>  
  25.             <groupId>redis.clients</groupId>  
  26.             <artifactId>jedis</artifactId>  
  27.             <version>2.8.2</version>  
  28.         </dependency>  
  29.     </dependencies>  
  30. </project>  

目录结构是这样的



JedisProperties.java

[java]  view plain  copy
  1. package com.ibigsea.jedis.autoconfigure;  
  2.   
  3. import org.springframework.boot.context.properties.ConfigurationProperties;  
  4.   
  5. @ConfigurationProperties(prefix = JedisProperties.JEDIS_PREFIX)  
  6. public class JedisProperties {  
  7.       
  8.     public static final String JEDIS_PREFIX = "jedis";  
  9.       
  10.     private String host;  
             
     private String password;
  1.       
  2.     private int port;  
  3.       
  4.     private int maxTotal;  
  5.       
  6.     private int maxIdle;  
  7.       
  8.     private int maxWaitMillis;  
  9.   
  10.     public String getHost() {  
  11.         return host;  
  12.     }  
  13.   
  14.     public void setHost(String host) {  
  15.         this.host = host;  
  16.     }  
  17.   
  18.     public int getPort() {  
  19.         return port;  
  20.     }  
  21.   
  22.     public void setPort(int port) {  
  23.         this.port = port;  
  24.     }  
  25.   
  26.     public int getMaxTotal() {  
  27.         return maxTotal;  
  28.     }  
  29.   
  30.     public void setMaxTotal(int maxTotal) {  
  31.         this.maxTotal = maxTotal;  
  32.     }  
  33.   
  34.     public int getMaxIdle() {  
  35.         return maxIdle;  
  36.     }  
  37.   
  38.     public void setMaxIdle(int maxIdle) {  
  39.         this.maxIdle = maxIdle;  
  40.     }  
  41.   
  42.     public int getMaxWaitMillis() {  
  43.         return maxWaitMillis;  
  44.     }  
  45.   
  46.     public void setMaxWaitMillis(int maxWaitMillis) {  
  47.         this.maxWaitMillis = maxWaitMillis;  
  48.     }  
  49.       
  50. }  

JedisAutoConfiguration.java

[java]  view plain  copy
  1. package com.ibigsea.jedis.autoconfigure;  
  2.   
  3. import org.springframework.beans.factory.annotation.Autowired;  
  4. import org.springframework.beans.factory.annotation.Qualifier;  
  5. import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;  
  6. import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;  
  7. import org.springframework.boot.context.properties.EnableConfigurationProperties;  
  8. import org.springframework.context.annotation.Bean;  
  9. import org.springframework.context.annotation.Configuration;  
  10.   
  11. import com.ibigsea.jedis.client.RedisClient;  
  12.   
  13. import redis.clients.jedis.JedisPool;  
  14. import redis.clients.jedis.JedisPoolConfig;  
  15.   
  16. @Configuration  
  17. @EnableConfigurationProperties(JedisProperties.class)//开启属性注入,通过@autowired注入   
  18. @ConditionalOnClass(RedisClient.class)//判断这个类是否在classpath中存在  
  19. public class JedisAutoConfiguration {  
  20.       
    @Autowired
    private JedisProperties prop;
    
    @Bean(name="jedisPool")
    public JedisPool jedisPool(){
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(prop.getMaxActive());
        return new JedisPool(config,prop.getHost(),prop.getPort());
    }
    
    @Bean(name="jedis")
    public Jedis getJedis(JedisPool jedisPool){
        Jedis jedis = jedisPool.getResource();
        jedis.auth(prop.getPassword());//设置密码
        return jedis;
    }
  21.     
  22.       
  23. }  

RedisClient.java

[java]  view plain  copy
  1. package com.ibigsea.jedis.client;  
  2.   
  3. import redis.clients.jedis.Jedis;  
  4. import redis.clients.jedis.JedisPool;  
  5.   
  6. /** 
  7.  * 就一个小Demo 随便写下 
  8.  * @author bigsea 
  9.  * 
  10.  */  
  11. @Component
  12. public class RedisClient {  
  13.   
  14.   
    	@Autowired
    	private JedisPool jedisPool;
    	@Autowired
    	private Jedis jedis;
    
    	 public void set(String key,String value){
    	     jedis.set(key,value);
    	     jedis.close();
    	 }
    
    	 public String get(String key){
    	     String value = jedis.get(key);
     	    jedis.close();
     	    return value;
    	 }
  15.       
  16. }  

还要在spring.factories里面配置

[html]  view plain  copy
  1. # Auto Configure  
  2. org.springframework.boot.autoconfigure.EnableAutoConfiguration=\  
  3. com.ibigsea.jedis.autoconfigure.JedisAutoConfiguration  



新建一个工程测试


pom.xml

[html]  view plain  copy
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.     <modelVersion>4.0.0</modelVersion>  
  4.   
  5.     <groupId>com.ibigsea</groupId>  
  6.     <artifactId>test-starter</artifactId>  
  7.     <version>0.0.1-SNAPSHOT</version>  
  8.     <packaging>jar</packaging>  
  9.   
  10.     <name>test-starter</name>  
  11.     <url>http://maven.apache.org</url>  
  12.   
  13.     <properties>  
  14.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  15.         <boot.version>1.3.5.RELEASE</boot.version>  
  16.     </properties>  
  17.   
  18.     <dependencies>  
  19.         <dependency>  
  20.             <groupId>com.ibigsea</groupId>  
  21.             <artifactId>jedis-spring-boot-starter</artifactId>  
  22.             <version>1.0-SNAPSHOT</version>  
  23.         </dependency>  
  24.         <dependency>  
  25.             <groupId>org.springframework.boot</groupId>  
  26.             <artifactId>spring-boot-starter-web</artifactId>  
  27.             <version>${boot.version}</version>  
  28.         </dependency>  
  29.         <dependency>  
  30.             <groupId>org.springframework.boot</groupId>  
  31.             <artifactId>spring-boot-starter-test</artifactId>  
  32.             <version>${boot.version}</version>  
  33.             <scope>test</scope>  
  34.         </dependency>  
  35.     </dependencies>  
  36. </project>  

application.yml

[java]  view plain  copy
  1. jedis :  
  2.   host : 127.0.0.1  
  3.   port : 6379  
  4.   maxTotal: 100  
  5.   maxIdle: 10  
  6.   maxWaitMillis : 100000  
  7. server :  
  8.   port : 8082  

App.java

[java]  view plain  copy
  1. package com.ibigsea.test_starter;  
  2.   
  3. import org.springframework.beans.factory.annotation.Autowired;  
  4. import org.springframework.boot.SpringApplication;  
  5. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  6. import org.springframework.web.bind.annotation.RequestMapping;  
  7. import org.springframework.web.bind.annotation.RestController;  
  8.   
  9. import com.ibigsea.jedis.client.RedisClient;  
  10.   
  11.   
  12. @SpringBootApplication   
  13. @RestController  
  14. public class App {  
  15.       
  16.     @Autowired  
  17.     private RedisClient redisClient;  
  18.       
  19.     public static void main(String[] args) {  
  20.         SpringApplication.run(App.class, args);  
  21.     }  
  22.       
  23.     @RequestMapping("/set")  
  24.     public String set(String key, String value) throws Exception{  
  25.         redisClient.set(key, value);  
  26.         return "success";  
  27.     }  
  28.       
  29.     @RequestMapping("/get")  
  30.     public String get(String key) throws Exception {  
  31.         return redisClient.get(key);  
  32.     }  
  33. }  

测试结果




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值