redis utils写法
首页 > 后端开发    作者:StanWind   2016年9月24日 0:58 星期六   热度:3467°   百度已收录  
时间:2016-9-24 0:58   热度:3467° 

package pw.goyd.db;



import pw.goyd.game.constant.setting.ServerSetting;

import pw.goyd.game.server.ServerLog;

import pw.goyd.subscribe.Publisher;

import redis.clients.jedis.Jedis;

import redis.clients.jedis.JedisPool;

import redis.clients.jedis.JedisPoolConfig;

import redis.clients.jedis.exceptions.JedisConnectionException;



/

  Jedis池管理 和 订阅

 
@author StanWind

 

 
/

public final class RedisUtil implements ServerSetting{

    private static JedisPool jedisPool = null;

    private static Publisher pub = null;

    

    

    /


      初始化Redis连接池

     
/

    static {

        try {

            JedisPoolConfig config = new JedisPoolConfig();

            config.setMaxActive(MAX_ACTIVE);

            config.setMaxIdle(MAX_IDLE);

            config.setMaxWait(MAX_WAIT);

            config.setTestOnBorrow(TEST_ON_BORROW);

            //无密码

            jedisPool = new JedisPool(config, R_ADDR, R_PORT, TIMEOUT);

            //jedisPool = new JedisPool(config, R_ADDR, R_PORT, TIMEOUT, R_AUTH);

            

             

            //订阅 获取客户端    

            pub = new Publisher();    

            pub.publish(getJedis()); //发布一个频道

            

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

//    /

//     获取JedisPool 用来新建Jedis对象

//    
@return JedisPool

//     */

//    private static JedisPool getJedisPool(){

//     return jedisPool;

//    }

    

    /

      发布消息

     
/

    public static void publishData(final byte[] channel,final byte[] data){

    Jedis j = getJedis();

    if(j!=null){

    pub.publish(j,channel,data);

    returnResource(j);//释放资源

    }else{

    ServerLog.getLogger().info("Jedis对象不足");

    }

    }

    /


      发布房间消息

     
@param channel

      @param data

     
/

    public static void pubRoom(final int roomID,final byte[] data){

    Jedis j = getJedis();

    if(j!=null){

    pub.publish(j,("room."+roomID).getBytes(),data);

    returnResource(j);//释放资源

    }else{

    ServerLog.getLogger().info("Jedis对象不足");

   

    }

    }

    

    

    /*

     
获取Jedis实例

      @return

     
/

    public synchronized static Jedis getJedis() {

        int timeoutCount = 0;  

        while (true) {  

            try {  

                if (null != jedisPool) {  

                    return jedisPool.getResource();  

                }  

            } catch (Exception e) {  

                if (e instanceof JedisConnectionException) {  

                    timeoutCount++;  

                    ServerLog.getLogger().warn("getJedis timeoutCount={}", timeoutCount);  

                    if (timeoutCount > 3) {  

                        break;  

                    }  

                } else {  

                ServerLog.getLogger().error("GetJedis error,", e);  

                  break;  

                }  

            }  

            break;  

        }  

        return null;  

    }

    

    /


      释放jedis资源

     
@param jedis

     */

    public static void returnResource(final Jedis jedis) {

        if (jedis != null) {

            jedisPool.returnResource(jedis);

        }

    }

}

二维码加载中...
本文作者:StanWind      文章标题: redis utils写法
本文地址:https://www.stanwind.com/post/13
版权声明:若无注明,本文皆为“Make it Better”原创,转载请保留文章出处。

返回顶部    首页    手机版本    后花园  
版权所有:Make it Better    站长: StanWind    赣ICP备17014296号