Spring集成Redis使用RedisTemplate

1、POM:

[html]  view plain  copy
  1. <!-- spring-redis -->  
  2. <!-- config junit jar -->  
  3. <dependency>  
  4.     <groupId>junit</groupId>  
  5.     <artifactId>junit</artifactId>  
  6.     <version>4.8.2</version>  
  7.     <scope>test</scope>  
  8. </dependency>  
  9. <!-- config redis data and client jar -->  
  10. <dependency>  
  11.     <groupId>org.springframework.data</groupId>  
  12.     <artifactId>spring-data-redis</artifactId>  
  13.     <version>1.0.2.RELEASE</version>  
  14. </dependency>  
  15. <dependency>  
  16.     <groupId>redis.clients</groupId>  
  17.     <artifactId>jedis</artifactId>  
  18.     <version>2.1.0</version>  
  19. </dependency>  
  20.   
  21. <!-- config need jar -->  
  22. <dependency>  
  23.     <groupId>commons-lang</groupId>  
  24.     <artifactId>commons-lang</artifactId>  
  25.     <version>2.6</version>  
  26. </dependency>  
  27. <dependency>  
  28.     <groupId>org.apache.geronimo.specs</groupId>  
  29.     <artifactId>geronimo-servlet_3.0_spec</artifactId>  
  30.     <version>1.0</version>  
  31. </dependency>  
  32. <!-- cofig spring jar -->  
  33. <dependency>  
  34.     <groupId>org.springframework</groupId>  
  35.     <artifactId>spring-core</artifactId>  
  36.     <version>${org.springframework.version}</version>  
  37. </dependency>  
2、redis.properties,redis基本配置

[html]  view plain  copy
  1. # Redis 参数配置   
  2. redis.isopen:yes  
  3. redis.host:172.16.30.23  
  4. redis.port:6379  
  5. redis.pass:  
  6.   
  7.   
  8. redis.maxIdle:300  
  9. redis.maxActive:600  
  10. redis.maxWait:1000  
  11. redis.testOnBorrow:true  
3、applicationContext-redis.xml配置文件

[html]  view plain  copy
  1.    <!-- 注意此处注入的是JedisPoolConfig,说明SDR还依赖与Jedis -->  
  2. <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">  
  3.     <property name="maxIdle" value="${redis.maxIdle}" />  
  4.     <property name="maxActive" value="${redis.maxActive}" />  
  5.     <property name="maxWait" value="${redis.maxWait}" />  
  6.     <property name="testOnBorrow" value="${redis.testOnBorrow}" />  
  7. </bean>  
  8.   
  9. <bean id="connectionFactory"  
  10.     class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"  
  11.     p:host-name="${redis.host}" p:port="${redis.port}" p:password="${redis.pass}"  
  12.     p:pool-config-ref="poolConfig" />  
  13.   
  14. <bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">  
  15.     <property name="connectionFactory" ref="connectionFactory" />  
  16.     <!-- 如果不配置Serializer,那么存储的时候智能使用String,如果用User类型存储,那么会提示错误User can't cast   
  17.         to String!!! -->  
  18.     <property name="keySerializer">  
  19.         <bean  
  20.             class="org.springframework.data.redis.serializer.StringRedisSerializer" />  
  21.     </property>  
  22.     <property name="valueSerializer">  
  23.         <bean  
  24.             class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />  
  25.     </property>  
  26. </bean>  
4、 redisTemplate的使用

[java]  view plain  copy
  1. public void add(final User user){  
  2.       
  3.     //方式1:.在redistemplate中配置Serializer  
  4.     redisTemplate.execute(new RedisCallback<Object>() {  
  5.         @Override  
  6.         public Object doInRedis(RedisConnection connection)  
  7.                 throws DataAccessException {  
  8.             connection.set(redisTemplate.getStringSerializer().serialize(user.getId()), redisTemplate.getStringSerializer().serialize(user.getName()));  
  9.             return null;  
  10.         }  
  11.     });  
  12.       
  13.     //方式2:不在redistemplate中配置Serializer,而是在Service的实现类中单独指定Serializer。  
  14.     ValueOperations<Serializable, Serializable> valueOps = redisTemplate.opsForValue();  
  15.     valueOps.set(user.getId(), user);  
  16. }  

[java]  view plain  copy
  1. public User get(final String userId) {  
  2.       
  3.     //方式1:.在redistemplate中配置Serializer  
  4.     return redisTemplate.execute(new RedisCallback<User>() {  
  5.         @Override  
  6.         public User doInRedis(RedisConnection connection)  
  7.                 throws DataAccessException {  
  8.             byte[] key = redisTemplate.getStringSerializer().serialize(userId);  
  9.             User user = new User();  
  10.             if(connection.exists(key)){  
  11.                 byte[] value = connection.get(key);  
  12.                 String name = redisTemplate.getStringSerializer().deserialize(value);  
  13.                 user.setId(userId);  
  14.                 user.setName(name);  
  15.             }  
  16.             return user;  
  17.         }  
  18.     });  
  19.     //方式2:不在redistemplate中配置Serializer,而是在Service的实现类中单独指定Serializer。  
  20.     BoundValueOperations<Serializable, Serializable> boundValueOps = redisTemplate.boundValueOps(userId);  
  21.     User serializable = (User) boundValueOps.get();  
  22.     System.out.println(serializable);  
  23.     return serializable;  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值