redis队列操作

PHP版:

<?php
/**
 * Redis
 * 配置 $redis_host,$redis_port
 * 队列操作
 * @author win 7
 */
class RQueue{
    
    private function __construct() {
        static $redis_host="192.168.31.200";
        static $redis_port="6379";
        static $redis_auth="";
        $this->redis = new Redis();
        
        $this->redis->connect($redis_host,$redis_port);
    }
    
    private static $_instance;
    
    public static function getInstance(){
    
        if(!(self::$_instance instanceof self)){
            self::$_instance = new self;
        }
        
        return self::$_instance;
    }
    
    public function get($qkey){
        return $this->redis->get($qkey);
    }
    public function setex($qkey, $val, $expired){
        return $this->redis->setex($qkey, $expired, $val);
    }
    /*
     * 入队操作
     */
    public function push($qkey, $content) {
        if(is_array($content))$content = json_encode($content);
        if($this->redis){
            $result =  $this->redis->lPush($qkey,$content);
            return $result;
        }else{
            return false;
        }

    }
    /*
     * 出队操作
    */
    public function lpop($qkey) {
        
        if($this->redis){
            $result =  $this->redis->lPop($qkey);
            return $result;
        }else{
            return false;
        }
    
    }
    
    public function close(){
        if($this->redis){
            $this->redis->close();
        }
    }
}

调用示例:

$redis = RQueue::getInstance();
$redis->setex("testredis", "abcdefg", 1000);
$redis->push("users", array("name"=>"yangwei","age"=>23));
echo $redis->get("testredis");
echo $redis->lpop('users')."
";

JAVA版:

public class RedisPoolUtils {
    
    private static Logger log = Logger.getLogger(RedisPoolUtils.class.getName());
    
    static String redis_url = "";
    static int redis_port = 6379;
    static String redis_pass = "";
    
    //可用连接实例的最大数目,默认值为8;
    //如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
    private static int MAX_ACTIVE = 1024;
    
    //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。
    private static int MAX_IDLE = 200;
    
    //等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException;
    private static int MAX_WAIT = 10000;
    
    private static int TIMEOUT = 10000;
    
    //在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
    private static boolean TEST_ON_BORROW = true;
    
    private static JedisPool jedisPool = null;

    private static ResourceBundle systemModeBundle = ResourceBundle.getBundle("system_mode");

    private static ResourceBundle bundle = null;
    
    /**
     * 初始化Redis连接池
     */
    static {
        try {
            initDB();
            
            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxTotal(MAX_ACTIVE);
            //config.setMaxActive(MAX_ACTIVE);
            config.setMaxIdle(MAX_IDLE);
            //config.setMaxWait(MAX_WAIT);
            config.setMaxWaitMillis(MAX_WAIT);
            config.setTestOnBorrow(TEST_ON_BORROW);
            jedisPool = new JedisPool(config, redis_url, redis_port, TIMEOUT, redis_pass);
            //jedisPool = new JedisPool(config, redis_url, redis_port, TIMEOUT);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    
    private static void initDB(){
        String system_mode = systemModeBundle.getString("system_mode");

        log.info("RedisPoolUtils init system_mode :"+system_mode);

        if(Constants.SystemMode.PROD.getCode().equals(system_mode)){//生产模式
            bundle = ResourceBundle.getBundle("sysConfig");
        }else{//测试模式
            bundle = ResourceBundle.getBundle("sysConfig_test");
        }
        
        try {
            redis_url  = bundle.getString("redisHost");
            redis_port = Integer.valueOf(bundle.getString("redisPort"));
            redis_pass = bundle.getString("redisPass");

            MAX_ACTIVE = Integer.parseInt(bundle.getString("redis-max_active"));
            MAX_IDLE   = Integer.parseInt(bundle.getString("redis-max_idle"));
            MAX_WAIT   = Integer.parseInt(bundle.getString("redis-max_wait"));
            TIMEOUT    = Integer.parseInt(bundle.getString("redis-timeout"));
        }  catch  (Exception e) {    
            log.error("Get Property Exception", e);
        } finally{
        }
    }
    /**
     * 获取Jedis实例
     * @return
     */
    public  static Jedis getJedis() {
        try {
            if (jedisPool != null) {
                Jedis resource = jedisPool.getResource();
                return resource;
            } else {
                return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    
    /**
     * 释放jedis资源
     * @param jedis
     */
    public static void returnResource(final Jedis jedis) {
        if (jedis != null) {
            jedisPool.returnResourceObject(jedis);
//            jedisPool.returnResource(jedis);
        }
    }
    
    
    public static void main(String [] args){
        Jedis jedis = RedisPoolUtils.getJedis();
        jedis.set("sms_plan", "1");
        
        String aa = jedis.get("sms_plan");
        System.out.println("sms_plan :"+aa);
        
        RedisPoolUtils.returnResource(jedis);
    }
    
    
}
public class RedisUtils {
    private static Logger log = Logger.getLogger(RedisUtils.class);

    public static String getSmsPlan() {
        String smsPlan = "1";
        Jedis jedis = null;
        try {
            jedis = RedisPoolUtils.getJedis();
            smsPlan = jedis.get("sms_plan");
        } catch (Exception e) {
            log.error("redis获取smsPlan失败 ", e);
        } finally {
            RedisPoolUtils.returnResource(jedis);
        }
        return smsPlan;
    }

    /**
     * 生成自增id
     * 
     * @param key
     * @return
     */
    public static Long autoIncreId(String key) {
        Long id = null;
        Jedis jedis = null;
        try {
            jedis = RedisPoolUtils.getJedis();
            id = jedis.incr("auto_id:" + key);
        } finally {
            RedisPoolUtils.returnResource(jedis);
        }
        return id;
    }

    /**
     * 缓存数据
     * 
     * @param key
     * @param val
     * @return
     */
    public static String cacheData(String key, String val) {
        String ret = "";
        Jedis jedis = null;
        try {
            jedis = RedisPoolUtils.getJedis();
            ret = jedis.set(key, val);
        } finally {
            RedisPoolUtils.returnResource(jedis);
        }
        return ret;
    }

    /**
     * 获取缓存中的数据
     * 
     * @param key
     * @return
     */
    public static String getData(String key) {
        String val = "";
        Jedis jedis = null;
        try {
            jedis = RedisPoolUtils.getJedis();
            val = jedis.get(key);
        } finally {
            RedisPoolUtils.returnResource(jedis);
        }
        return val;
    }

    public static String getAccessToken(){
        String accessToken = "";
        Jedis jedis = null;
        try {
            jedis = RedisPoolUtils.getJedis();
            accessToken = jedis.get("access_token");
        } finally {
            RedisPoolUtils.returnResource(jedis);
        }
        return accessToken;
    }

    /**
     * 缓存accessToken
     * @param val
     * @param sec 有效期
     * @return
     */
    public static String setAccessToken(String val,int sec) {
        String ret = "";
        Jedis jedis = null;
        try {
            jedis = RedisPoolUtils.getJedis();
            ret = jedis.setex("access_token",sec,val);
        } finally {
            RedisPoolUtils.returnResource(jedis);
        }
        return ret;
    }

    public static String getJsapiTicket(){
        String jsapi_ticket = "";
        Jedis jedis = null;
        try {
            jedis = RedisPoolUtils.getJedis();
            jsapi_ticket = jedis.get("jsapi_ticket");
        } finally {
            RedisPoolUtils.returnResource(jedis);
        }
        return jsapi_ticket;
    }

    /**
     * 缓存jsapiTicket
     * @param val
     * @param sec
     * @return
     */
    public static String setJsapiTicket(String val,int sec) {
        String ret = "";
        Jedis jedis = null;
        try {
            jedis = RedisPoolUtils.getJedis();
            ret = jedis.setex("jsapi_ticket",sec,val);
        } finally {
            RedisPoolUtils.returnResource(jedis);
        }
        return ret;
    }



    /**
     * 缓存AccessToken
     * @param val
     * @return
     */
    public static String setJDAccessToken(String val) {
        String ret = "";
        Jedis jedis = null;
        try {
            jedis = RedisPoolUtils.getJedis();
            ret = jedis.setex("jd_access_token",86400,val);
        }catch (Exception e){
            log.error("setAccessToken Exception",e);
        } finally {
            RedisPoolUtils.returnResource(jedis);
        }
        return ret;
    }

    public static String getJDAccessToken(){
        String accessToken = "";
        Jedis jedis = null;
        try {
            jedis = RedisPoolUtils.getJedis();
            accessToken = jedis.get("jd_access_token");
        } catch (Exception e){
            log.error("getAccessToken Exception",e);
        } finally {
            RedisPoolUtils.returnResource(jedis);
        }
        return accessToken;
    }

    /**
     * 缓存refreshToken
     * @param val
     * @return
     */
    public static String setRefreshToken(String val) {
        String ret = "";
        Jedis jedis = null;
        try {
            jedis = RedisPoolUtils.getJedis();
            ret = jedis.set("jd_refresh_token",val);
        }catch (Exception e){
            log.error("setJDRefreshToken Exception",e);
        } finally {
            RedisPoolUtils.returnResource(jedis);
        }
        return ret;
    }

  
/**
* 缓存 订单id
* @param jdOrderId
*/
public static void addJdOrderId(String jdOrderId){
Jedis jedis = null;
String key = "jdOrderId";
try {
jedis = RedisPoolUtils.getJedis();
jedis.lpush(key,jdOrderId);
}catch (Exception e){
log.error("setJDRefreshToken Exception",e);
} finally {
RedisPoolUtils.returnResource(jedis);
}
}

/**
* 取订单id
*/
public static String getJdOrderId( ){
Jedis jedis = null;
String key = "jdOrderId";
String jdOrderId = "";
try {
jedis = RedisPoolUtils.getJedis();
boolean ret = jedis.exists(key);
if(ret && jedis.llen(key) > 0){
jdOrderId = jedis.rpop(key);
}
}catch (Exception e){
log.error("setJDRefreshToken Exception",e);
} finally {
RedisPoolUtils.returnResource(jedis);
}
return jdOrderId;
}

}
原文地址:https://www.cnblogs.com/beyang/p/8302918.html