美文网首页java
java公共类redis调用

java公共类redis调用

作者: yichen_china | 来源:发表于2020-12-08 16:32 被阅读0次

    二.redis的配置

    目录结构推荐

    image

    在conf.properties里配置redis信息

    image

    redis-server=127.0.0.1
    redis-port=根据自己配置
    redis-passwd=gg思密达

    三.redis的工具类RedisClient.java(自己建包)

      
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import java.util.Properties;
    import java.util.Set;
     
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
     
    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.JedisPool;
    import redis.clients.jedis.JedisPoolConfig;
    import redis.clients.jedis.JedisShardInfo;
    import redis.clients.jedis.ShardedJedis;
    import redis.clients.jedis.ShardedJedisPool;
     
     
     
    public class RedisClient {
        private static Log log=LogFactory.getLog(RedisClient.class);
     
        private Jedis jedis;//非切片额客户端连接
        private JedisPool jedisPool;//非切片连接池
        private ShardedJedis shardedJedis;//切片额客户端连接
        private ShardedJedisPool shardedJedisPool;//切片连接池
        private String redisServer = getConfigAttr("conf.properties","redis-server");
        private String redisPort = getConfigAttr("conf.properties","redis-port");
        private String passwd = getConfigAttr("conf.properties","redis-passwd");
        private static final String  defaultServerIp = "127.0.0.1";//如果没有配置地址,默认为本机地址
        
        public RedisClient() 
        { 
            initServerPort();
            initialPool(); 
            initialShardedPool(); 
            shardedJedis = shardedJedisPool.getResource(); 
            jedis = jedisPool.getResource();
            jedis.auth(passwd);
        } 
        private void initServerPort(){
            if("".equals(redisServer) || redisServer==null){
                redisServer = defaultServerIp;
            }
            if("".equals(redisPort) || redisPort==null){
                redisPort = "6379";
            }
        }
     
        /**
         * 初始化非切片池
         */
        private void initialPool() 
        { 
            // 池基本配置 
            JedisPoolConfig config = new JedisPoolConfig(); 
            config.setMaxActive(20); 
            config.setMaxIdle(5); 
            config.setMaxWait(1000l); 
            config.setTestOnBorrow(false); 
            
            jedisPool = new JedisPool(config,redisServer,Integer.parseInt(redisPort),100000);
        }
        
        /** 
         * 初始化切片池 
         */ 
        private void initialShardedPool() 
        { 
            // 池基本配置 
            JedisPoolConfig config = new JedisPoolConfig(); 
            config.setMaxActive(20); 
            config.setMaxIdle(5); 
            config.setMaxWait(1000l); 
            config.setTestOnBorrow(false); 
            // slave链接 
            List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>(); 
            JedisShardInfo jedisShardInfo= new JedisShardInfo(redisServer,Integer.parseInt(redisPort),100000,"master");
            jedisShardInfo.setPassword(passwd);
            shards.add(jedisShardInfo);
     
            // 构造池 
            shardedJedisPool = new ShardedJedisPool(config, shards); 
        } 
        
        public void cacheRecord(Map<String, String> map){
            Set<Map.Entry<String, String>> entrySet = map.entrySet();
            //将关系集合entrySet进行迭代,存放到迭代器中                
            Iterator<Map.Entry<String, String>> it2 = entrySet.iterator();
                            
            while(it2.hasNext()){
                Map.Entry<String, String> me = it2.next();//获取Map.Entry关系对象me
                String key = me.getKey();//通过关系对象获取key
                String value = me.getValue();//通过关系对象获取value
                shardedJedis.set(key, value);                
            }
        }
        
        public void delCacheList(List<String> list){
            for(String s:list){
                jedis.del(s);
            }
        }
        
        public boolean isExist(String s){
            return jedis.exists(s);
        }
        
        public String getValue(String s){
            return jedis.get(s);
        }
        
        public void destroy(){
            jedisPool.returnResource(jedis);
            shardedJedisPool.returnResource(shardedJedis);
        }
        
        private String getConfigAttr(String propfile,String attr){
            InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(propfile);    
            Properties p = new Properties();    
            try {    
                p.load(inputStream);    
            } catch (IOException e) {
                if(log.isErrorEnabled()){
                    log.error(e);
                }
            } catch (Exception e) {
                if(log.isErrorEnabled()){
                    log.error(e);
                }
            }finally{
                if(p.isEmpty()){
                    try {
                        inputStream.close();
                    } catch (IOException e) {
                        if(log.isErrorEnabled()){
                            log.error(e);
                        }
                    } catch (Exception e) {
                        if(log.isErrorEnabled()){
                            log.error(e);
                        }
                    }
                }
            }    
            String attrValue = p.getProperty(attr);   
     
            return attrValue;
        }
        
        /**
         * 获取jedis
         * @return the jedis
         */
        public Jedis getJedis() {
            return jedis;
        }
        /**
         * 设置jedis
         * @param jedis the jedis to set
         */
        public void setJedis(Jedis jedis) {
            this.jedis = jedis;
        }
     
    }
    

    四.取用redis的参数

    RedisClient redisClientPc = new RedisClient();String aaa = redisClientPc.getValue("aaa") == null ? "" : redisClientPc.getValue("aaa");
    

    相关文章

      网友评论

        本文标题:java公共类redis调用

        本文链接:https://www.haomeiwen.com/subject/cbcqgktx.html