public class WnsRedisFactory { private static Cache pool = null; private static JedisConnectionFactory redisConnFactory = null; //对主缓存 test的操作 private static Cache getInstance() { if (pool == null) { pool = Redis.use("test"); } return pool; } /** * 通过key删除 * * @param key */ public static void del(String key) throws Exception { Cache redis = null; redis = getInstance(); redis.del(key); } public static void del(String key, String field) throws Exception { Cache redis = null; redis = getInstance(); redis.hdel(key, field); } /** * 添加key value 并且设置存活时间 * * @param key * @param value * @param liveTime */ public static void set(String key, String value, int liveTime) throws Exception { Cache redis = null; redis = getInstance(); Jedis jedis =redis.getJedis(); jedis.set(key, value); redis.expire(key, liveTime); redis.close(jedis); } public static Long decrby(String key, int value) throws Exception { Cache redis = null; redis = getInstance(); return redis.decrBy(key, value); } public static Long decr(String key) throws Exception { Cache redis = null; redis = getInstance(); return redis.decr(key); } /** * 设置或者清除指定key的value上的某个位置的比特位,如果该key原先不存在,则新创建一个key,其value将会自动分配内存, * 直到可以放下指定位置的bit值。 * * @param key * @param offset * @param value true代表1,false代表0 * @return * @return 返回原来位置的bit值是否是1,如果是1,则返回true,否则返回false。 */ public static void setbit(String key,Long offset ,Boolean value,int liveTime) { Cache redis = null; redis = getInstance(); Jedis jedis = redis.getJedis(); try { jedis.setbit(key, offset, value); } finally {redis.close(jedis);} redis.expire(key, liveTime); } //计算传人二进制字符串 1的个数 public static long bitcount(String key) { Cache redis = null; redis = getInstance(); Jedis jedis = redis.getJedis(); try { return jedis.bitcount(key); } finally {redis.close(jedis);} } //通过传人的op(and/or)将传人的二进制 与/非 传回结果 public static long bitop(BitOP op,String destKey,String ... srcKeys) { Cache redis = null; redis = getInstance(); Jedis jedis = redis.getJedis(); long result = 0; result = jedis.bitop(op, destKey, srcKeys); redis.close(jedis); return result; } /** * bitMap进行and运算 * RedisKeys.DAYBITOPDESTKEY 为静态变量 */ // 换一种实现方式,不用 bitset 类,直接用redis的bit操作 public static int bitMapAnd( String...keys){ int result = 0; BitOP op = BitOP.AND; try { bitop(op, RedisKeys.DAYBITOPDESTKEY, keys); result = (int) WnsRedisFactory.bitcount(RedisKeys.DAYBITOPDESTKEY); return result; } catch (Exception e) { System.out.println("AND算法异常"); } return 0; } /** * bitMap进行OR运算 */ // 换一种实现方式,不用 bitset 类,直接用redis的bit操作 public static int bitMapOr( String...keys){ int result = 0; BitOP op = BitOP.OR; try { bitop(op, RedisKeys.DAYBITOPDESTKEY, keys); result = (int) WnsRedisFactory.bitcount(RedisKeys.DAYBITOPDESTKEY); return result; } catch (Exception e) { System.out.println("OR算法异常"); } return 0; } }