您的位置:首页 > 数据库 > Redis

Redis Redis(2.6版本以上) Key 常用操作和方法详解

2014-03-03 16:04 435 查看
package ddd;

import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Set;

import redis.clients.jedis.Jedis;

public class Key_Redis {

	/**
	 * WQL  2014-3-3 
	 * Redis Redis(2.6版本以上) Key 常用操作和方法详解
	 * @param args
	 * @throws UnsupportedEncodingException 
	 */
	public static void main(String[] args) throws UnsupportedEncodingException {
		Jedis je=new Jedis("127.0.0.1",6379);
		je.auth("ycm12345");
		
		/**
		 * 删除给定的一个或多个 key 。不存在的 key 会被忽略。
		 */
		je.del("kk01","kk02");
		
		je.set("kk01", "哈哈,hellwo");
		/** 序列化给定 key ,并返回被序列化的值*/
		byte[] b=je.dump("kk01");
		System.out.println(new String(b,"UTF-8")); //中文乱文
		
		/** 检查给定 key 是否存在。 */
		boolean exists=je.exists("kk01");
		System.out.println(exists);
		
		/**Key 查找
		 * KEYS * 匹配数据库中所有 key 。
		KEYS h?llo 匹配 hello ,hallo 和 hxllo 等。
		KEYS h*llo 匹配 hllo 和 heeeeello 等。
		KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。
		 * */
		Set<String> keys=je.keys("*");//返回所有Key,如果Key很多,不要这么做,会相当慢
		
		/**
		 * 将 key 原子性地从当前实例传送到目标实例的指定数据库上,
		 * 一旦传送成功,key 保证会出现在目标实例上,而当前实例上的 key 会被删除。 
		 * 这个命令是一个原子操作,它在执行的时候会阻塞进行迁移的两个实例,直到以下任意结果发生:迁移成功,迁移失败,等到超时。
		 */
		//je.migrate("192.168.1.127", 6371, "kk01", 0, 60000);
		//当前实例己经被删除
		System.out.println(je.get("kk01"));
		Jedis je2=new Jedis("192.168.1.127",6371);
		//新的Redis存储当前Key的值
		System.out.println(je2.get("kk01"));
		//为了方便测试,重新在6379赋值
		je.set("kk01", "哈哈,hellwo");
		
		/** 将当前数据库的 key 移动到给定的数据库 db 当中。
		如果当前数据库 (源数据库) 和给定数据库 (目标数据库) 有相同名字的给定 key ,或者 key 不存在于当前
		数据库,那么 MOVE 没有任何效果。 */
		je.move("kk01", 1);
		System.out.println("------------------------");
		
		
		//返回给定 key 引用所储存的值的次数。此命令主要用于除错。
		System.out.println(je.objectEncoding("kk01"));
		//返回给定 key 引用所储存的值的次数。此命令主要用于除错。
		System.out.println(je.objectRefcount("kk01"));
		
		/** 从当前数据库中随机返回 (不删除) 一个 key 。*/
		String key=je.randomKey();
		System.out.println(key);
		
		/**改名Key*/
		je.rename("kk01", "new_kk01");
		System.out.println(je.get("new_kk01"));
		/** 当且仅当 newkey 不存在时,将 key 改名为 newkey 。 */
		je.renamenx("new_kk01", "new_n_kk001");
		je.rename("new_n_kk001", "kk01");
		
		/** 以秒为单位,返回给定 key 的剩余生存时间 (TTL, time to live)。
		 * 在 Redis 2.8 以前,当 key 不存在,或者 key 没有设置剩余生存时间时,命令都返回 -1 。
		 *  */
		Long ttl=je.ttl("kk001");
		System.out.println(ttl);
		
		/**
		 * none (key 不存在)
			string (字符串)
			list (列表)
			set (集合)
			zset (有序集)
			hash (哈希表)
		 * 
		 */
		String t=je.type("kk01");
		System.out.println(t);
		
		
		
	}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: