Key值通配符

既然是数据库,肯定有模糊查询的需求,Redis允许使用通配符,这一点,在做一些批量删除的时候,会非常实用

*: 通配任意多个字符

?: 通配单个字符

[]: 通配括号内的某1个字符

String类型

因为存在一种技术,叫序列化,图省事的话,只使用这一种,就够用了

package cn.swsk.xbry.api.v1.md1001;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.exceptions.JedisDataException;

/**
 * @author css
 * @date 2019/9/24 22:20
 */
public class Test {
   public static void main(String[] args) throws InterruptedException {
      JedisPoolConfig config = new JedisPoolConfig();
      config.setMaxTotal(25);
      config.setMaxIdle(20);
      config.setMinIdle(5);
      try (
         JedisPool pool = new JedisPool(config, "127.0.0.1", 6379);
         Jedis jedis = pool.getResource()) {
         jedis.select(0);
         //type of String

         String key1 = "key1", key2 = "key2";
         if (!jedis.exists(key1)) {
            jedis.set(key1, "test");
         }
         //设置key生存时间,当key过期时,它会被自动删除。 Time为秒数
         jedis.expire(key1, 1);

         //Setex 命令为指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值。
         jedis.setex(key1, 20, "1312312");

         //查看key的生存时间的剩余时间,若为-1,说明key已过期
         System.out.println(jedis.ttl(key1));

         System.out.println(jedis.get(key1));
         Thread.sleep(1200);
         System.out.println(jedis.get(key1));

         try {
            //key1会被直接覆盖, key2不存在时报错
            jedis.rename(key2, key1);
         } catch (JedisDataException e) {
            e.printStackTrace();
            //TODO: no such key
         }

      }
   }
}
01-20 01:11