请选择 进入手机版 | 继续访问电脑版

Redis中国用户组(CRUG)论坛

 找回密码
 立即注册

扫一扫,访问微社区

搜索
热搜: 活动 交友 discuz
查看: 8160|回复: 2

Jedis操作redis--Set篇

[复制链接]
  • TA的每日心情
    郁闷
    2016-9-7 17:51
  • 签到天数: 2 天

    [LV.1]初来乍到

    3

    主题

    6

    帖子

    122

    积分

    注册会员

    Rank: 2

    积分
    122
    发表于 2016-9-6 14:13:53 | 显示全部楼层 |阅读模式
    1. package com.component.jedis;

    2. import java.util.Set;

    3. import redis.clients.jedis.Jedis;


    4. public class JedisSet extends JedisCommon{
    5.        
    6.         private static final String OK_CODE = "OK";
    7.     private static final String OK_MULTI_CODE = "+OK";
    8.    
    9.     /**
    10.      * 把一个或多个元素添加到指定集合
    11.      *
    12.      * @param key
    13.      * @param members
    14.      * @return
    15.      */
    16.     public static Long sadd(String key, String members){
    17.         Jedis jedis = JedisManager.getJedis();
    18.         Long result ;
    19.         try {
    20.             result = jedis.sadd(key, members);
    21.         }finally{
    22.             JedisManager.returnResource(jedis);
    23.         }
    24.         return result;
    25.     }
    26.    
    27.     /**
    28.      * 返回多个集合的差集
    29.      * @param keys
    30.      * @return
    31.      */
    32.     public static Set<String> sdiff(String... keys){
    33.         Jedis jedis = JedisManager.getJedis();
    34.         Set<String> result ;
    35.         try {
    36.             result = jedis.sdiff(keys);
    37.         }finally{
    38.             JedisManager.returnResource(jedis);
    39.         }
    40.         return result;
    41.     }
    42.    
    43.     /**
    44.      * 返回多个集合的交集
    45.      *
    46.      * @param keys
    47.      * @return
    48.      */
    49.     public static Set<String> sinter(String... keys){
    50.         Jedis jedis = JedisManager.getJedis();
    51.         Set<String> result ;
    52.         try {
    53.             result = jedis.sinter(keys);
    54.         }finally{
    55.             JedisManager.returnResource(jedis);
    56.         }
    57.         return result;
    58.     }
    59.    
    60.     /**
    61.      * 判断元素是否是集合成员
    62.      *
    63.      * @param key
    64.      * @param member
    65.      * @return
    66.      */
    67.     public static boolean sismember(String key, String member){
    68.         Jedis jedis = JedisManager.getJedis();
    69.         boolean result ;
    70.         try {
    71.             result = jedis.sismember(key, member);
    72.         }finally{
    73.             JedisManager.returnResource(jedis);
    74.         }
    75.         return result;
    76.     }
    77.    
    78.     /**
    79.      * 返回集合所有成员
    80.      *
    81.      * @param key
    82.      * @return
    83.      */
    84.     public static Set<String> smembers(String key){
    85.         Jedis jedis = JedisManager.getJedis();
    86.         Set<String> result ;
    87.         try {
    88.             result = jedis.smembers(key);
    89.         }finally{
    90.             JedisManager.returnResource(jedis);
    91.         }
    92.         return result;
    93.     }
    94.    
    95.     /**
    96.      * 把指定成员从一个集合移动到目标集合,
    97.      *  指定成员不存在,不执行任何操作
    98.      * @param srckey
    99.      * @param dstkey
    100.      * @param member
    101.      * @return
    102.      */
    103.     public static Long smove(String srckey, String dstkey, String member){
    104.         Jedis jedis = JedisManager.getJedis();
    105.         Long result ;
    106.         try {
    107.             result = jedis.smove(srckey, dstkey, member);
    108.         }finally{
    109.             JedisManager.returnResource(jedis);
    110.         }
    111.         return result;
    112.     }
    113.    
    114.     /**
    115.      * 随机移除并返回一个元素
    116.      *
    117.      * @param key
    118.      * @return
    119.      */
    120.     public static String spop(String key){
    121.         Jedis jedis = JedisManager.getJedis();
    122.         String result ;
    123.         try {
    124.             result = jedis.spop(key);
    125.         }finally{
    126.             JedisManager.returnResource(jedis);
    127.         }
    128.         return result;
    129.     }
    130.    
    131.     /**
    132.      * 移除一个或多个元素,不存在的  元素会被忽略
    133.      *
    134.      * @param key
    135.      * @param members
    136.      * @return
    137.      */
    138.     public static Long srem(String key, String... members){
    139.         Jedis jedis = JedisManager.getJedis();
    140.         Long result ;
    141.         try {
    142.             result = jedis.srem(key, members);
    143.         }finally{
    144.             JedisManager.returnResource(jedis);
    145.         }
    146.         return result;
    147.     }
    148.    
    149.     /**
    150.      * 返回指定集合的并集
    151.      *
    152.      * @param keys
    153.      * @return
    154.      */
    155.     public static Set<String> sunion(String... keys){
    156.         Jedis jedis = JedisManager.getJedis();
    157.         Set<String> result ;
    158.         try {
    159.             result = jedis.sunion(keys);
    160.         }finally{
    161.             JedisManager.returnResource(jedis);
    162.         }
    163.         return result;
    164.     }
    165.    
    166.     /**
    167.      * 当key不存在时,才放入值,超时时间单位为秒
    168.      * @param jedis
    169.      * @param key
    170.      * @param value
    171.      * @return
    172.      */
    173.     public static boolean set(String key, String value, Long timeOut){
    174.         
    175.         Jedis jedis = null;
    176.         String resp = null;
    177.         try{
    178.             jedis = JedisManager.getJedis();
    179.             resp = jedis.set(key, value, "NX", "EX", timeOut == null ? 1L : timeOut);
    180.         } finally{
    181.             JedisManager.returnResource(jedis);  
    182.         }
    183.         return isStatusOk(resp);
    184.     }
    185.    
    186.     /**
    187.      * 判断 返回值是否ok.
    188.      */
    189.     public static boolean isStatusOk(String status) {
    190.         return (status != null) && (OK_CODE.equals(status) || OK_MULTI_CODE.equals(status));
    191.     }
    192. }
    复制代码


  • TA的每日心情
    开心
    2016-9-7 09:37
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    23

    主题

    33

    帖子

    246

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    246
    发表于 2016-9-7 09:36:29 | 显示全部楼层
    JedisManager 类能否发表一下
  • TA的每日心情
    郁闷
    2016-9-7 17:51
  • 签到天数: 2 天

    [LV.1]初来乍到

    3

    主题

    6

    帖子

    122

    积分

    注册会员

    Rank: 2

    积分
    122
     楼主| 发表于 2016-9-7 17:56:03 | 显示全部楼层
    berqilee 发表于 2016-9-7 09:36
    JedisManager 类能否发表一下

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;

    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.JedisPool;
    import redis.clients.jedis.JedisPoolConfig;
    import redis.clients.jedis.Protocol;
    import redis.clients.jedis.exceptions.JedisException;

    public class JedisManager {

        private static Logger log = LoggerFactory.getLogger(JedisManager.class);
       
        private JedisPoolConfig jpc;
       
        private static JedisPool pool;
       
        private String host;
       
        private String password;
       
        private int timeOut;
       
        private int port;
       
        public void setPassword(String password) {
            this.password = password;
        }

        public void setTimeOut(int timeOut) {
            this.timeOut = timeOut;
        }

        /**
         * 初始化redis连接池
         */
        public void init(){
            
            log.info("start jredis connection pool");
            
            if(timeOut == 0){
                timeOut = Protocol.DEFAULT_TIMEOUT;
            }
            pool = new JedisPool(jpc, host, port, timeOut, password);
            returnResource(pool.getResource());
            
            log.info("start jredis connection pool successfully");
        }
       
        /**
         * 从连接池中获取连接
         * @return
         */
        public static Jedis getJedis(){
            
            if(pool != null){
                return pool.getResource();
            } else{
                log.warn("JedisPool is null, can't get connection of redis ");
                throw new NullPointerException("JedisPool is null");
            }
        }
       
        /**
         * 把连接返回给连接池
         * @param jedis
         */
        public static void returnResource(Jedis jedis){
            
            if(jedis != null){
                try{
                    pool.returnResource(jedis);
                } catch(JedisException e){
                    log.warn("catch JedisException when return resource", e);
                }
            }
        }
       
        /**
         * 关闭连接池
         */
        public void shutdown(){
            
            log.info("start to shutdown redis server");
            if(pool != null){
                try{
                    pool.destroy();
                } catch(JedisException e){
                    log.error("destory RedisPool failed", e);
                }
            }
            log.info("shutdown redis server successfully");
        }
       

        public void setJpc(JedisPoolConfig jpc) {
            this.jpc = jpc;
        }
       
        public void setHost(String host) {
            this.host = host;
        }

        public void setPort(int port) {
            this.port = port;
        }
    }
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    阿里云
    阿里云

    Archiver|手机版|小黑屋|Redis中国用户组 ( 京ICP备15003959号

    GMT+8, 2017-12-17 04:39 , Processed in 0.248425 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表