• Java客户端Jedis


    使用Jedis的Java客户端

    maven依赖

    <!-- jedis -->
    <dependency>
        <groupid>redis.clients</groupid>
        jedis</artifactid>
        <version>2.9.0</version>
    </dependency>
     
    <!-- fastjson -->
    <dependency>
        <groupid>com.alibaba</groupid>
        fastjson</artifactid>
        <version>1.2.22</version>
    </dependency>

    使用Jedis连接池

    JedisUtil.java

    package com.wishfulcloud.commons.dataSource.redis.jedis;
     
    import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
     
    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.JedisPool;
     
    /**   
     * Jedis 工具类
     * 
     * 
     * @author wangxuezheng
     * @date 2017年3月21日 下午3:28:18
     * @version V1.0   
     *
     */
    public class JedisUtil {
     
        private static volatile GenericObjectPoolConfig poolConfig = null;
     
        static{
            poolConfig = new GenericObjectPoolConfig();
     
            // 最大连接数为默认值的5倍
            poolConfig.setMaxTotal(GenericObjectPoolConfig.DEFAULT_MAX_TOTAL * 5);
            // 最大空闲连接数为默认值的3倍
            poolConfig.setMaxIdle(GenericObjectPoolConfig.DEFAULT_MAX_IDLE * 3);
            // 最小空闲连接数为默认值的2倍
            poolConfig.setMinIdle(GenericObjectPoolConfig.DEFAULT_MIN_IDLE * 2);
            // 开启jmx功能
            poolConfig.setJmxEnabled(true);
            // 连接池没有连接后客户端的最大等待时间(单位 毫秒)
            poolConfig.setMaxWaitMillis(3000);
        }
     
     
        private static volatile JedisPool jedisPool = null;
     
        private JedisUtil(){}
     
        /**
         * 从连接池中获取一个Jedis实例
         * 
         * @return
         */
        public static Jedis getJedisInstance() throws Exception{
     
            try {
                if(null == jedisPool){
                    synchronized (JedisUtil.class){
                        if(null == jedisPool){
                            jedisPool = new JedisPool(poolConfig,"192.168.1.218",6379);
                        }
                    }
                }
            } catch (Exception e) {
                throw e;
            }
            return jedisPool.getResource();
        }
     
        /**
         * 归还到连接池
         * 
         * @param jedis
         */
        public static void close(Jedis jedis) throws Exception{
            try {
                if(null != jedis){
                    jedis.close();
                }
            } catch (Exception e) {
                throw e;
            }
        }
    }

    BaseCache.java

    package com.wishfulcloud.commons.dataSource.redis.jedis;
     
    import com.alibaba.fastjson.JSON;
     
    import redis.clients.jedis.Jedis;
     
    /**   
     * 单机或着主从复制 ,Jedis Java 客户端
     * 
     * @author wangxuezheng
     * @date 2017年3月21日 下午3:55:26
     * @version V1.0   
     *
     */
    public class BaseCache<t> {
     
        /**
         * 保存或者更新一个实体
         * 
         * 如果seconds参数值不为0的话,则是过期缓存,具有缓存时长
         * 
         * @param jedis
         * @param entity 实体对象
         * @param id     实体主键
         * @param seconds 有效时长多少秒
         *   
         * @return true 保存或更新成功 
         *         false 保存或更新失败
         */
        public Boolean saveOrUpdate(Jedis jedis, T entity, String id, int seconds){
            String key  = entity.getClass().getSimpleName().toLowerCase() + ":" + id;
            String ok = jedis.set(key , JSON.toJSONString(entity));
            if (seconds != 0){
                jedis.expire(key, seconds);
            }
            return "OK".equals(ok);
        }
     
        /**
         * 根据类型和id获取一个实体,未获取到返回 null
         * 
         * @param jedis
         * @param clazz 实体.class
         * @param id    主键id
         * 
         * @return T 或着 null
         */
        public T getById(Jedis jedis, Class<t> clazz, String id){
            String object = jedis.get(clazz.getSimpleName().toLowerCase() + ":" +id);
            return JSON.parseObject(object, clazz);
        }
     
        /**
         * 根据id删除一个实体对象
         * 
         * @param jedis
         * @param clazz 实体.class
         * @param id 主键id
         * @return  true 删除成功
         *          false 删除失败
         *      
         */
        public Boolean deleteEntity(Jedis jedis, Class<t> clazz, String id){
            String key = clazz.getSimpleName().toLowerCase() + ":" +id;
            return jedis.del(key) > 0;
        }
     
    }
  • 相关阅读:
    ES ElasticSearch 7.x 下动态扩大索引的shard数量
    Java框架Spring Boot & 服务治理框架Dubbo & 应用容器引擎Docker 实现微服务发布
    谈一下Docker与Kubernetes集群的日志和日志管理-转载
    Elasticsearch优化 & filebeat配置文件优化 & logstash格式配置 & grok实践
    Nginx错误日志(error_log)配置及信息详解
    赵总的运维体系专栏学习的总结
    APP或者前端通过识别用户代理详细信息和浏览器数据进行安全防御
    Kubernetes使用Eedpoints连接外部服务端口
    CDN域名解析问题
    Istio 实践 之 Circuit breakers 断路器 (请求熔断)
  • 原文地址:https://www.cnblogs.com/rinack/p/6604604.html
Copyright © 2020-2023  润新知