zoukankan      html  css  js  c++  java
  • redis的一些操作

    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;
        }
    }        
  • 相关阅读:
    SVN打tag
    validate命令---rman进行备份和回复的验证
    通达OA 小飞鱼工作流在线培训教程(一)HTML基础介绍
    How to improve Java's I/O performance( 提升 java i/o 性能)
    mybatis批量插入、批量删除
    Java測试覆盖率工具----Cobertura,EclEmma
    Java Secret: Using an enum to build a State machine(Java秘术:用枚举构建一个状态机)
    灵活数据源的固定行列交叉报表的制作
    HDFS学习笔记(1)初探HDFS
    JPEG压缩图像超分辨率重建算法
  • 原文地址:https://www.cnblogs.com/hjsblogs/p/5948763.html
Copyright © 2011-2022 走看看