打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
jedis封装Dao层


  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"  
  4.     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"  
  5.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd  
  7.     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd  
  8.     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd  
  9.     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">  
  10. <!-- 连接池配置 -->  
  11.     <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">  
  12.         <!-- 最大连接数 -->  
  13.         <property name="maxTotal" value="30" />  
  14.         <!-- 最大空闲连接数 -->  
  15.         <property name="maxIdle" value="10" />  
  16.         <!-- 每次释放连接的最大数目 -->  
  17.         <property name="numTestsPerEvictionRun" value="1024" />  
  18.         <!-- 释放连接的扫描间隔(毫秒) -->  
  19.         <property name="timeBetweenEvictionRunsMillis" value="30000" />  
  20.         <!-- 连接最小空闲时间 -->  
  21.         <property name="minEvictableIdleTimeMillis" value="1800000" />  
  22.         <!-- 连接空闲多久后释放, 当空闲时间>该值 且 空闲连接>最大空闲连接数 时直接释放 -->  
  23.         <property name="softMinEvictableIdleTimeMillis" value="10000" />  
  24.         <!-- 获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1 -->  
  25.         <property name="maxWaitMillis" value="1500" />  
  26.         <!-- 在获取连接的时候检查有效性, 默认false -->  
  27.         <property name="testOnBorrow" value="true" />  
  28.         <!-- 在空闲时检查有效性, 默认false -->  
  29.         <property name="testWhileIdle" value="true" />  
  30.         <!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->  
  31.         <property name="blockWhenExhausted" value="false" />  
  32.     </bean>     
  33.     <!-- jedis客户端单机版 -->  
  34.     <bean id="redisClient" class="redis.clients.jedis.JedisPool">  
  35.         <constructor-arg name="host" value="192.168.116.13"></constructor-arg>  
  36.         <constructor-arg name="port" value="6379"></constructor-arg>  
  37.         <constructor-arg name="poolConfig" ref="jedisPoolConfig"></constructor-arg>  
  38.     </bean>    
  39.     <bean id="jedisClient" class="com.taotao.rest.daoImpl.JedisClientCluster"></bean>  
  40.     <!--  <bean id="redisClient" class="redis.clients.jedis.JedisCluster">  
  41.         <constructor-arg name="nodes">  
  42.             <set>  
  43.                 <bean class="redis.clients.jedis.HostAndPort">  
  44.                     <constructor-arg name="host" value="192.168.116.13"></constructor-arg>  
  45.                     <constructor-arg name="port" value="7001"></constructor-arg>  
  46.                 </bean>  
  47.                 <bean class="redis.clients.jedis.HostAndPort">  
  48.                     <constructor-arg name="host" value="192.168.116.13"></constructor-arg>  
  49.                     <constructor-arg name="port" value="7002"></constructor-arg>  
  50.                 </bean>  
  51.                 <bean class="redis.clients.jedis.HostAndPort">  
  52.                     <constructor-arg name="host" value="192.168.116.13"></constructor-arg>  
  53.                     <constructor-arg name="port" value="7003"></constructor-arg>  
  54.                 </bean>  
  55.                 <bean class="redis.clients.jedis.HostAndPort">  
  56.                     <constructor-arg name="host" value="192.168.116.13"></constructor-arg>  
  57.                     <constructor-arg name="port" value="7004"></constructor-arg>  
  58.                 </bean>  
  59.                 <bean class="redis.clients.jedis.HostAndPort">  
  60.                     <constructor-arg name="host" value="192.168.116.13"></constructor-arg>  
  61.                     <constructor-arg name="port" value="7005"></constructor-arg>  
  62.                 </bean>  
  63.                 <bean class="redis.clients.jedis.HostAndPort">  
  64.                     <constructor-arg name="host" value="192.168.116.13"></constructor-arg>  
  65.                     <constructor-arg name="port" value="7006"></constructor-arg>  
  66.                 </bean>  
  67.             </set>  
  68.         </constructor-arg>  
  69.         <constructor-arg name="poolConfig" ref="jedisPoolConfig"></constructor-arg>  
  70.     </bean>    
  71.     <bean id="JedisClientCluster" class="com.taotao.rest.daoImpl.JedisClientCluster"></bean>  
  72.     -->  
  73.       
  74. </beans>  

单机版java

  1. package com.taotao.rest.daoImpl;  
  2.   
  3. import org.springframework.beans.factory.annotation.Autowired;  
  4.   
  5. import com.taotao.rest.dao.JedisClient;  
  6.   
  7. import redis.clients.jedis.Jedis;  
  8. import redis.clients.jedis.JedisPool;  
  9.   
  10. public class JedisClientSingle implements JedisClient{  
  11.       
  12.     @Autowired  
  13.     private JedisPool jedisPool;   
  14.       
  15.     @Override  
  16.     public String get(String key) {  
  17.         Jedis jedis = jedisPool.getResource();  
  18.         String string = jedis.get(key);  
  19.         jedis.close();  
  20.         return string;  
  21.     }  
  22.   
  23.     @Override  
  24.     public String set(String key, String value) {  
  25.         Jedis jedis = jedisPool.getResource();  
  26.         String string = jedis.set(key, value);  
  27.         jedis.close();  
  28.         return string;  
  29.     }  
  30.   
  31.     @Override  
  32.     public String hget(String hkey, String key) {  
  33.         Jedis jedis = jedisPool.getResource();  
  34.         String string = jedis.hget(hkey, key);  
  35.         jedis.close();  
  36.         return string;  
  37.     }  
  38.   
  39.     @Override  
  40.     public long hset(String hkey, String key, String value) {  
  41.         Jedis jedis = jedisPool.getResource();  
  42.         Long result = jedis.hset(hkey, key, value);  
  43.         jedis.close();  
  44.         return result;  
  45.     }  
  46.   
  47.     @Override  
  48.     public long incr(String key) {  
  49.         Jedis jedis = jedisPool.getResource();  
  50.         Long result = jedis.incr(key);  
  51.         jedis.close();  
  52.         return result;  
  53.     }  
  54.   
  55.     @Override  
  56.     public long expire(String key, int second) {  
  57.         Jedis jedis = jedisPool.getResource();  
  58.         Long result = jedis.expire(key, second);  
  59.         jedis.close();  
  60.         return result;  
  61.     }  
  62.   
  63.     @Override  
  64.     public long ttl(String key) {  
  65.         Jedis jedis = jedisPool.getResource();  
  66.         Long result = jedis.ttl(key);  
  67.         jedis.close();  
  68.         return result;  
  69.     }  
  70.   
  71. }  


集群版的

  1. package com.taotao.rest.daoImpl;  
  2.   
  3. import org.springframework.beans.factory.annotation.Autowired;  
  4.   
  5. import redis.clients.jedis.JedisCluster;  
  6.   
  7. import com.taotao.rest.dao.JedisClient;  
  8.   
  9. public class JedisClientCluster implements JedisClient {  
  10.   
  11.     @Autowired  
  12.     private JedisCluster jedisCluster;  
  13.       
  14.     @Override  
  15.     public String get(String key) {  
  16.         return jedisCluster.get(key);  
  17.     }  
  18.   
  19.     @Override  
  20.     public String set(String key, String value) {  
  21.         return jedisCluster.set(key, value);  
  22.     }  
  23. //哈希的get  
  24.     @Override  
  25.     public String hget(String hkey, String key) {  
  26.         return jedisCluster.hget(hkey, key);  
  27.     }  
  28.     //哈希的set  
  29.     @Override  
  30.     public long hset(String hkey, String key, String value) {  
  31.         return jedisCluster.hset(hkey, key, value);  
  32.     }  
  33.     //设置缓存对象值+1  
  34.     @Override  
  35.     public long incr(String key) {  
  36.         return jedisCluster.incr(key);  
  37.     }  
  38. //设置缓存对象超时时间  
  39.     @Override  
  40.     public long expire(String key, int second) {  
  41.         return jedisCluster.expire(key, second);  
  42.     }  
  43. //判断缓存对象是否存在  
  44.     //TTL以毫秒为单位。  
  45.   
  46.     //-1, 如果key没有到期超时。  
  47.   
  48.     //-2, 如果键不存在。  
  49.     @Override  
  50.     public long ttl(String key) {  
  51.         return jedisCluster.ttl(key);  
  52.     }  
  53.   
  54. }  



使用用例

配置文件

名字:resource.properties

内容

INDEX_CONTENT_REDIS_KEY=INDEX_CONTENT_REDIS_KEY

  1. package com.taotao.rest.service.impl;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.apache.commons.lang3.StringUtils;  
  6. import org.springframework.beans.factory.annotation.Autowired;  
  7. import org.springframework.beans.factory.annotation.Value;  
  8. import org.springframework.stereotype.Service;  
  9.   
  10. import com.taotao.common.utils.JsonUtils;  
  11. import com.taotao.mapper.TbContentMapper;  
  12. import com.taotao.pojo.TbContent;  
  13. import com.taotao.pojo.TbContentExample;  
  14. import com.taotao.pojo.TbContentExample.Criteria;  
  15. import com.taotao.rest.dao.JedisClient;  
  16. import com.taotao.rest.service.ContentService;  
  17.   
  18. @Service  
  19. public class ContentServiceImpl implements ContentService{  
  20.   
  21.     @Autowired  
  22.     private TbContentMapper contentMapper;  
  23.     @Autowired  
  24.     private JedisClient jedisClient;  
  25.     @Value("${INDEX_CONTENT_REDIS_KEY}")  
  26.     private String INDEX_CONTENT_REDIS_KEY;  
  27.     @Override  
  28.     public List<TbContent> getContentList(long contentCid) {  
  29.         //从缓存中取出  
  30.         try {  
  31.             String result = jedisClient.hget(INDEX_CONTENT_REDIS_KEY, contentCid+"");  
  32.             if(!StringUtils.isBlank(result)){  
  33.                 List<TbContent> resultlist = JsonUtils.jsonToList(result, TbContent.class);  
  34.                 return resultlist;  
  35.             }  
  36.         } catch (Exception e) {  
  37.             e.printStackTrace();  
  38.         }  
  39.           
  40.         TbContentExample example = new TbContentExample();  
  41.         Criteria criteria = example.createCriteria();  
  42.         criteria.andCategoryIdEqualTo(contentCid);  
  43.           
  44.         List<TbContent> list = contentMapper.selectByExample(example);  
  45.           
  46.         //像缓存中添加内容  
  47.         try {  
  48.             //把list转换成字符串  
  49.             String cacheString =JsonUtils.objectToJson(list);  
  50.             jedisClient.hset(INDEX_CONTENT_REDIS_KEY, contentCid+"", cacheString);  
  51.         } catch (Exception e) {  
  52.             e.printStackTrace();  
  53.         }  
  54.           
  55.         return list;  
  56.     }  
  57.   
  58. }  

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Jedis编程设计:连接池
征服 Redis + Jedis
spring框架下配置lucene
Spring+Redis(keyspace notification)实现定时任务(订单过期自动关闭)
Redis Sentinel主从高可用方案(附Jedis Sentinel教程)
Redis的介绍及使用实例.
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服