Redis - 在项目中使用Redis

2022/7/3 2:19:24

本文主要是介绍Redis - 在项目中使用Redis,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录
  • 1. 非Spring框架中使用
  • 2. 在Spring中的使用
  • 3. 场景:在Redis中保存和读取对象

1. 非Spring框架中使用

  1. 依赖
    最常用的Redis在Java上的开发包就是jedis.jar,同时也需要导入commons-pool2.jar用作连接池的组件依赖包。注意commons-pool2的版本最好保持最新,过低版本可能导致无法使用。这里做示例的版本是:jedis-2.9.3.jar和commons-pool2-2.8.0.jar。
  2. 工具类
    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.JedisPool;
    import redis.clients.jedis.JedisPoolConfig;
    
    public class RedisUtil {
        // Redis所在主机的IP地址
        private static String URL = "127.0.0.1";
        // Redis所在主机的端口
        private static int PORT = 6379;
        // Redis最大实例数,也就是连接池最大同时活跃的连接数量,默认8
        private static int MAX_TOTAL = 64;
        // Redis连接池控制的空闲连接数量,默认8
        private static int MAX_IDLE = 16;
        // 向连接池获取连接超时报错时长(毫秒)
        private static int MAX_WAIT = 20000;
        // 连接Redis服务端超时时长(毫秒)
        private static int TIMEOUT = 10000;
        // 获取jedis实例以前进行验证实例有效性
        private static boolean TEST_ON_BORROW = true;
        // jedis连接池
        private static JedisPool jedisPool = null;
    
        static {
            try {
                JedisPoolConfig config = new JedisPoolConfig();
                // 老版本中叫MaxActive()
                config.setMaxTotal(MAX_TOTAL);
                config.setMaxIdle(MAX_IDLE);
                // 老版本中叫MaxWait
                config.setMaxWaitMillis(MAX_WAIT);
                config.setTestOnBorrow(TEST_ON_BORROW);
                jedisPool = new Jedis(config, URL, PORT, TIMEOUT);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        // 获取连接
        public synchronized static Jedis getJedis() {
            Jedis redis;
            try {
                if (jedisPool != null) {
                    redis = jedisPool.getResource();
                    return redis;
                } else {
                    return null;
                }
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
    
        // 释放链接
        public static void returnResource(final Jedis jedis) {
            if (jedis != null) {
                // 新版本中returnResource()方法已经弃用,官方推荐使用Pool类的close()方法释放连接
                jedisPool.close();
            }
        }
    }
    
  3. 使用
    // 要连接的Redis库
    private static final int redisDB = 0;
    // 连接对象
    private static Jedis redis = null;
    
    // 连接
    private static boolean connectionRedis() {
        redis = RedisUtil.getJedis();
        if (redis == null || !"PONE".equals(redis.ping())) {
            return false;
        }
        redis.select(redisDB);
        return true;
    }
    
    // 使用
    private static void useRedis() {
        if (this.connectionRedis()) {
            redis.set("key", "value");
            // 切记释放连接
            RedisUtil.returnResource(redis);
        }
    }
    

2. 在Spring中的使用

3. 场景:在Redis中保存和读取对象

  1. 说明
    要将JavaBean对象保存到Redis中,使用Hash数据格式保存和读取都过于繁琐,这里就使用到了JavaBean的序列化和反序列化后将数据以String数据类型保存来实现。
  2. 序列化和反序列化工具类
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    
    public class BeanUtil {
        // 序列化
        public static byte[] serialize(Object object) {
            ObjectOutputStream oos;
            ByteArrayOutputStream baos;
            try {
                baos = new ByteArrayOutputStream();
                oos = new ObjectOutputStream(baos);
                oos.writeObject(object);
                return baos.toByteArray();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
    
        // 反序列化
        public static Object unserizlize(byte[] binaryByte) {
            ObjectInputStream ois;
            ByteArrayInputStream bais = new ByteArrayInputStream(binaryByte);
            try {
                ois = new ObjectInputStream(bais);
                return ois.readObject();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    }
    
  3. 使用
    // 存
    redis.set("key".getByte(StandardCharsets.UTF_8), BeanUtil.serialize(entity));
    // 取
    Entity pe = (Entity) BeanUtil.unserizlize(redis.get("key".getByte(StandardCharsets.UTF_8)));
    


这篇关于Redis - 在项目中使用Redis的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程