java使用jeids实现redis2.6的key管理(2)
2017-08-18 00:00
453 查看
摘要: java使用jeids实现redis2.6的key管理(2)
代码:
https://github.com/viakiba/redis
主要是:
MIGRATE,MOVE,OBJECT,PERSIST/PEXPIRE/PEXPIREAT,PTTL/TTL
代码:
https://github.com/viakiba/redis
主要是:
MIGRATE,MOVE,OBJECT,PERSIST/PEXPIRE/PEXPIREAT,PTTL/TTL
import org.junit.Test; import redis.clients.jedis.Jedis; /** * @description: * 关于key的相关操作(2) * MIGRATE,MOVE,OBJECT,PERSIST/PEXPIRE/PEXPIREAT,PTTL/TTL * * 参考:http://redisdoc.com/index.html * @author viakiba * @date 2017年8月17日 */ public class App3 { static interface RedisConfig { public final static String HOST = "127.0.0.1"; public final static int PORT = 6379; } /** * @description: 测试连接是否通过 * @author: viakiba * @throws Exception */ @Test public void test1() throws Exception { //连接测试是否通过 Jedis jedis = new Jedis(RedisConfig.HOST,RedisConfig.PORT); System.out.println(jedis.ping());//pong则通过 } /** * @description: MIGRATE * 将 key 原子性地从当前实例传送到目标实例的指定数据库上,一旦传送成功, * key 保证会出现在目标实例上,而当前实例上的 key 会被删除。 * 注意: * 这个命令是一个原子操作,它在执行的时候会阻塞进行迁移的两个实例, * 直到以下任意结果发生:迁移成功,迁移失败,等待超时。 * 参考: * http://redisdoc.com/key/migrate.html * @author: viakiba * @throws Exception */ @Test public void test2() throws Exception { //jedis不存在该命令 Jedis jedis = new Jedis(RedisConfig.HOST,RedisConfig.PORT); jedis.flushAll(); } /** * @description: MOVE * 将当前数据库的 key 移动到给定的数据库 db 当中。 * 注意: * 如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定 key , * 或者 key 不存在于当前数据库,那么 MOVE 没有任何效果。 * 因此,也可以利用这一特性,将 MOVE 当作锁(locking)原语(primitive)。 * @author: viakiba * @throws Exception */ @Test public void test3() throws Exception { Jedis jedis = new Jedis(RedisConfig.HOST,RedisConfig.PORT); jedis.flushAll();//清空所有数据 System.out.println("=====准备数据========="); jedis.set("k1", "v1");//默认选择index为0的数据库 System.out.println("index0===>"+jedis.get("k1")); jedis.select(1); System.out.println("index1===>"+jedis.get("k1")); System.out.println("======执行move======"); jedis.select(0); jedis.move("k1", 1); System.out.println("======查看结果======"); System.out.println("index0===>"+jedis.get("k1")); jedis.select(1); System.out.println("index1===>"+jedis.get("k1")); } /** * @description: OBJECT * OBJECT 命令允许从内部察看给定 key 的 Redis 对象。 * @author: viakiba * @throws Exception */ @Test public void test4() throws Exception { Jedis jedis = new Jedis(RedisConfig.HOST,RedisConfig.PORT); // jedis.flushAll();//清空所有数据 // System.out.println("=====准备数据========="); // jedis.set("k1", "v1");//默认选择index为0的数据库 //OBJECT REFCOUNT <key> 返回给定 key 引用所储存的值的次数。此命令主要用于除错 // Long objectRefcount = jedis.objectRefcount("k1"); // System.out.println(objectRefcount); //OBJECT ENCODING <key> 返回给定 key 锁储存的值所使用的内部表示(representation)。 //个人理解 编码方式 embstr 这与value有关 编码有多种 /* 字符串可以被编码为 raw (一般字符串)或 int (为了节约内存,Redis 会将字符串表示的 64 位有符号整数编码为整数来进行储存)。 列表可以被编码为 ziplist 或 linkedlist 。 ziplist 是为节约大小较小的列表空间而作的特殊表示。 集合可以被编码为 intset 或者 hashtable 。 intset 是 7fe0 只储存数字的小集合的特殊表示。 哈希表可以编码为 zipmap 或者 hashtable 。 zipmap 是小哈希表的特殊表示。 有序集合可以被编码为 ziplist 或者 skiplist 格式。 ziplist 用于表示小的有序集合,而 skiplist 则用于表示任何大小的有序集合。 */ // String objectEncoding = jedis.objectEncoding("k1"); // System.out.println(objectEncoding); //OBJECT IDLETIME <key> 返回给定 key 自储存以来的空闲时间(idle, 没有被读取也没有被写入),以秒为单位。 Long objectIdletime = jedis.objectIdletime("k1"); System.out.println(objectIdletime);//单位是秒 } /** * @description: PTTL/TTL * TTL:以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。 * PTTL:这个命令类似于 TTL 命令,但它以毫秒为单位返回 key 的剩余生存时间,而不是像 TTL 命令那样,以秒为单位。 * @author: viakiba * @throws Exception */ @Test public void test5() throws Exception { Jedis jedis = new Jedis(RedisConfig.HOST,RedisConfig.PORT); jedis.flushAll();//清空所有数据 System.out.println("=====准备数据========="); jedis.set("k0", "v0");//默认选择index为0的数据库 jedis.setex("k1", 5, "v1");//默认选择index为0的数据库 Thread.sleep(3000); /** 当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以秒为单位,返回 key 的剩余生存时间。 */ System.out.println(jedis.ttl("k2"));//秒级,另外pttl()jedis没有提供 System.out.println(jedis.ttl("k0"));//秒级,另外pttl()jedis没有提供 System.out.println(jedis.ttl("k1"));//秒级,另外pttl()jedis没有提供 } /** * @description: PEXPIRE/PEXPIREAT/PERSIST * PERSIST:移除给定 key 的生存时间,将这个 key 从『易失的』(带生存时间 key )转换成『持久的』(一个不带生存时间、永不过期的 key )。 * PEXPIREAT:这个命令和 EXPIREAT 命令类似,但它以毫秒为单位设置 key 的过期 unix 时间戳,而不是像 EXPIREAT 那样,以秒为单位。 * PEXPIRE:这个命令和 EXPIRE 命令的作用类似,但是它以毫秒为单位设置 key 的生存时间,而不像 EXPIRE 命令那样,以秒为单位。 * @author: viakiba * @throws Exception */ @Test public void test6() throws Exception { // Jedis jedis = new Jedis(RedisConfig.HOST,RedisConfig.PORT); // jedis.flushAll();//清空所有数据 // System.out.println("=====准备数据========="); // jedis.setex("k0", 10, "v0");//默认选择index为0的数据库 // System.out.println(jedis.ttl("k0")); // jedis.persist("k0"); // System.out.println("==========="); // System.out.println(jedis.ttl("k0")); } }
相关文章推荐
- java使用jeids实现redis2.6的key管理(1)
- java使用jeids实现redis2.6的key管理(3)
- java使用jeids实现redis2.6的server管理(1)
- java使用jeids实现redis2.6的String操作(1)
- java使用jeids实现redis2.6的list操作(1)
- java使用jeids实现redis2.6的String操作(4)
- java使用jeids实现redis2.6的list操作(3)
- java使用jeids实现redis2.6的GEO(地理位置)数据结构的操作
- java使用jeids实现redis2.6的连接
- java使用jeids实现redis2.6的String操作(2)
- java使用jeids实现redis2.6的list操作(4)
- java使用jeids实现redis2.6的String操作(3)
- java使用jeids实现redis2.6的脚本执行
- java使用jeids实现redis2.6的事务控制
- java使用jeids实现redis2.6的list操作(2)
- java 使用动态代理 和ThreadLocal实现事务管理实例
- Java使用Redis实现分布式锁
- Redis(2)用jedis实现在java中使用redis
- JAVA实现redis超时失效key 的监听触发
- Java中使用Jedis操作Redis的实现代码