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;
            }
        }
    }
  • 相关阅读:
    LeetCode105 从前序遍历和中序遍历构造二叉树
    LeetCode61 扑克牌中的顺子
    LeetCode141 环形链表
    LeetCode103 二叉树的锯齿形层次遍历
    509 斐波那契数
    剑指29 顺时针打印矩阵
    malloc分配内存2种方式:brk和mmap
    Python学习第139天(Django的分页器(paginator))
    Python学习第138天(Django的用户认真组件)
    Python学习第137天(admin部分参数补充)
  • 原文地址:https://www.cnblogs.com/songxingzhu/p/10441976.html
Copyright © 2011-2022 走看看