java使用jeids实现redis2.6的key管理(3)

代码:

    https://github.com/viakiba/redis

主要是:

    RANDOMKEY,RENAME/RENAMENX,SORT,TYPE,SCAN

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.junit.Test;

import redis.clients.jedis.Jedis;

/**
 * @description: 
 * 			关于key的相关操作(3)
 * 			RANDOMKEY,RENAME/RENAMENX,SORT,TYPE,SCAN
 * 			参考:http://redisdoc.com/index.html
 * @author viakiba
 * @date 2017年8月17日
 */
public class App4 {
	
	static interface RedisConfig {
		public final static String HOST = "localhost";
		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: randomKey
	 * 				从当前数据库中随机返回(不删除)一个 key 。
	 * @author: viakiba
	 * @throws Exception
	 */
	@Test
	public void test2() throws Exception {
		Jedis jedis = new Jedis(RedisConfig.HOST,RedisConfig.PORT);
		jedis.flushDB();
		jedis.set("k1", "v1");
		jedis.set("k2", "v2");
		jedis.set("k3", "v3");
		jedis.set("k4", "v4");
		String key = jedis.randomKey();
		System.out.println(key+":"+jedis.get(key));
	}
	
	/**
	 * @description: RENAME
	 * 				将 key 改名为 newkey 。
	 * 				当 key 和 newkey 相同,或者 key 不存在时,返回一个错误。
	 * 				当 newkey 已经存在时, RENAME 命令将覆盖旧值。
	 * 
	 * @author: viakiba
	 * @throws Exception
	 */
	@Test
	public void test3() throws Exception{
		Jedis jedis = new Jedis(RedisConfig.HOST,RedisConfig.PORT);
		jedis.flushDB();
		jedis.set("k1", "v1");
		jedis.set("k2", "v2");
		System.out.println(jedis.rename("k1", "k1"));//当 key 和 newkey 相同,返回ok
//		System.out.println(jedis.rename("k0", "k2"));// key 不存在,会抛出异常 JedisDataException
//		System.out.println(jedis.rename("k0", "k3"));// key 不存在,会抛出异常 JedisDataException
		jedis.rename("k1", "k2");
		System.out.println(jedis.get("k1"));
		System.out.println(jedis.get("k2"));
	}
	
	/**
	 * @description: RENAMENX
	 * 				当且仅当 newkey 不存在时,将 key 改名为 newkey 。
	 * 				当 key 不存在时,返回一个错误。
	 * 
	 * @author: viakiba
	 * @throws Exception
	 */
	@Test
	public void test4() throws Exception {
		Jedis jedis = new Jedis(RedisConfig.HOST,RedisConfig.PORT);
		jedis.flushDB();
		jedis.set("k1", "v1");
		jedis.set("k2", "v2");
		
		//没有key 抛出异常
//		System.out.println(jedis.renamenx("k0", "k2"));
//		System.out.println(jedis.renamenx("k0", "k3"));
		
		//newkey存在  返回0
//		System.out.println(jedis.renamenx("k1", "k2"));
//		System.out.println(jedis.get("k1"));
//		System.out.println(jedis.get("k2"));
		
		//newkey不存在  返回1
		System.out.println(jedis.renamenx("k1", "k3"));
		System.out.println(jedis.get("k1"));
		System.out.println(jedis.get("k2"));
		System.out.println(jedis.get("k3"));
	}
	
	/**
	 * @description: SORT
	 * 				返回或保存给定列表、集合、有序集合 key 中经过排序的元素。
	 * 				排序默认以数字作为对象,值被解释为双精度浮点数,然后进行比较。
	 * @author: viakiba
	 * @throws Exception
	 */
	@Test
	public void test5() throws Exception {
		Jedis jedis = new Jedis(RedisConfig.HOST,RedisConfig.PORT);
		jedis.flushDB();
		jedis.lpush("k1","4","3","5");//列表  没有相关的scan
		List<String> sort = jedis.sort("k1");
		for(String str: sort){
			System.out.println(str);
		}
	}
	
	/**
	 * @description: TYPE
	 * 				返回 key 所储存的值的类型。
	 * 				none (key不存在),string (字符串),list (列表),set (集合)
	 * 				zset (有序集),hash (哈希表)
	 * @author: viakiba
	 * @throws Exception
	 */
	@Test
	public void test6() throws Exception {
		Jedis jedis = new Jedis(RedisConfig.HOST,RedisConfig.PORT);
		jedis.flushDB();
		jedis.set("k1", "v1");
		jedis.lpush("k2", "v2","v3","v4","v5");
		
		System.out.println(jedis.type("k0"));//none (key不存在)
		System.out.println(jedis.type("k1"));//string (字符串)
		System.out.println(jedis.type("k2"));//list (列表)
	}
	
	/**
	 * @description: SCAN/SSCAN/HSCAN/ZSCAN
	 * 				将 key 改名为 newkey 。
	 * 				当 key 和 newkey 相同,或者 key 不存在时,返回一个错误。
	 * 				当 newkey 已经存在时, RENAME 命令将覆盖旧值。
	 * 
	 * 		SCAN 命令用于迭代当前数据库中的数据库键。
	 * 		SSCAN 命令用于迭代集合键中的元素。
	 * 		HSCAN 命令用于迭代哈希键中的键值对。
	 * 		ZSCAN 命令用于迭代有序集合中的元素(包括元素成员和元素分值)。
	 * Jedis:未提供相关Api
	 * @author: viakiba
	 * @throws Exception
	 */
	@Test
	public void test7() throws Exception {
		Jedis jedis = new Jedis(RedisConfig.HOST,RedisConfig.PORT);
		jedis.flushDB();
		jedis.set("k1", "v1");//字符串
		jedis.set("k2", "v2");//字符串
		jedis.lpush("k3","v3","v4","v5");//列表  没有相关的scan
		jedis.sadd("k4", "k4","k5");//set集合   命令: sscan k4 0
		Map<Double,String> map = new HashMap<Double,String> ();
		map.put((double) 1, "mv1");//key是分数 或者说是权重
		map.put((double) 2, "mv2");
		map.put((double) 3, "mv3");
		jedis.zadd("k5", map);//SortedSet(有序集合)    命令: zscan k5 0
		jedis.hset("k6","y1","v6");//散列  命令:hscan k6 0
		System.out.println("========数据准备完成=======");
		//scan//sscan//hsacn//zscan
	}
}

 

转载于:https://my.oschina.net/viakiba/blog/1512515

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值