zoukankan      html  css  js  c++  java
  • JAVA中通过Jedis操作Redis连接与插入简单库

    一、简述

      JAVA中通过Jedis操作Redis连接与插入简单库

    二、依赖

            <!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
            <dependency>
                <groupId>redis.clients</groupId>
                <artifactId>jedis</artifactId>
                <version>2.9.0</version>
            </dependency>

    三、代码

    package com.test.utils.redis;
    
    import lombok.extern.log4j.Log4j2;
    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.JedisPool;
    import redis.clients.jedis.JedisPoolConfig;
    import redis.clients.jedis.Pipeline;
    import com.test.utils.redis.items.KvItem;
    
    import java.io.IOException;
    import java.util.List;
    
    @Log4j2
    public class RedisUtils {
        private final JedisPool jedisPool;
        private int dbIndex;
    
        /*
        Redis辅助插入类。
        * */
        public RedisUtils(String host, int post, int timeout, String password, boolean ssl, int maxTotal, int maxIdel, int dbIndex) {
            this.dbIndex = dbIndex;
            JedisPoolConfig config = new JedisPoolConfig();
            config.setTestOnBorrow(true);
            config.setMaxWaitMillis(120000);
            config.setMaxIdle(maxIdel);
            config.setMaxTotal(maxTotal);
            jedisPool = new JedisPool(config, host, post, timeout, password, ssl);
        }
    
        public boolean checkConnection() {
            try {
                Jedis jedis = jedisPool.getResource();
                if (jedis != null) {
                    jedis.close();
                    return true;
                }
            } catch (Exception ignored) {
                log.warn("[checkConnection] check redis connection failed. ", ignored);
            }
            return false;
        }
    
        private synchronized Jedis getJedis(int maxRetry) {
            Jedis jedis = null;
            Exception lastEx = new Exception("no error.");
            for (int i = 0; i < maxRetry; i++) {
                if (jedisPool == null) break;
                try {
                    jedis = jedisPool.getResource();
                    if (jedis == null) {
                        Thread.sleep(1000);
                    } else {
                        jedis.select(dbIndex); //临时使用
                        break;
                    }
                } catch (Exception e) {
                    jedis = null;
                    lastEx = e;
                }
            }
            if (jedis == null) {
                log.error("[get a jedis] get a jedis from pools failed, has been retry [" + maxRetry + "] times. please check connection. ", lastEx);
            }
            return jedis;
        }
    
        public synchronized boolean add(List<KvItem> item) {
            if (item == null || item.isEmpty()) return true;
            try {
                Jedis jedis = getJedis(300);
                if (jedis == null) {
                    log.error("[add to redis] add to [" + item.size() + "] items to redis, but get a jedis failed. please check");
                    return false;
                }
                Pipeline p = jedis.pipelined();
                for (KvItem kv : item) {
                    p.set(kv.getKey(), kv.getValue());
                }
                p.sync();
                try {
                    p.close();
                } catch (IOException e) {
                    log.warn("[add to redis] close jedis Pipeline failed.", e);
                }
                jedis.close();
                return true;
            } catch (Exception ex) {
                log.warn("[add to redis] occur a error.", ex);
                return false;
            }
        }
    }
  • 相关阅读:
    关于StringBuilder拼成的json格式数据,在转化成string数据类型后,转义符失效
    jQuery 引用地址{包括jquery和google提供的地址}, 节省你不必要的流量
    jQuery的.bind()、.live()和.delegate()之间区别
    使用Jquery Easy UI要导入的js顺序
    babygin
    card
    DecimalFormat用法
    DATEDIFF 函数 [日期和时间]
    IsDirectory( )的用法
    Arrays.asList()函数
  • 原文地址:https://www.cnblogs.com/songxingzhu/p/10441976.html
Copyright © 2011-2022 走看看