• Redis 在项目中使用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)));
      
  • 相关阅读:
    类与继承
    闭包、原型链和继承
    ajax(下)和“承诺”
    ajax(上)
    Ubuntu电源键软关机设置
    金老师语录摘要(七)
    金老师语录摘要(六)
    金老师语录摘要(四)
    金老师语录摘要(三)
    金老师语录摘要(二)
  • 原文地址:https://www.cnblogs.com/NyanKoSenSei/p/16436937.html
Copyright © 2020-2023  润新知