Jedis 常用操作
/**
* <strong>Jedis 常用操作</strong>
*/
public class RedisTest {
public static Jedis getJedis(){
Jedis jedis = new Jedis("localhost", 6379); //redis服务器的ip和端口
//jedis.auth("");//密码
jedis.select(0);
return jedis;
}
/**
* <strong>Key</strong>
*/
@Test
public void demoKey(){
Jedis jedis = RedisCRUD.getJedis();
System.out.println("键aa是否存在:" + jedis.exists("aa"));
System.out.println("键aa的类型:" + jedis.type("aa"));
System.out.println("随机获得一个key:" + jedis.randomKey());
System.out.println("将aa重命名为bb:"+jedis.rename("aa", "bb"));//没有aa会报错
System.out.println("删除bb:"+jedis.del("bb"));
System.out.println(jedis.keys("*"));//当前库下的所有key
}
/**
* <strong>String</strong>
*/
@Test
public void demoString(){
Jedis jedis = RedisCRUD.getJedis();
System.out.println("设置name:" + jedis.set("name", "太阳"));
System.out.println("设置name1:" + jedis.set("name1", "太阳1"));
System.out.println("设置name2:" + jedis.set("name2", "太阳2"));
System.out.println("设置name,如果存在返回0:" + jedis.setnx("name", "太阳月亮")); //TODO
System.out.println("获取key为name和name1的value值:" + jedis.mget("name", "name1"));
System.out.println("自增1:" + jedis.incr("index"));
System.out.println("自增1:" + jedis.incr("index"));
System.out.println("自增2:" + jedis.incrBy("count", 2));
System.out.println("自增2:" + jedis.incrBy("count", 2));
System.out.println("递减1:" + jedis.decr("count"));
System.out.println("递减2:" + jedis.decrBy("index", 2));
System.out.println("在name后面添加String:"+jedis.append("name", ",星星"));
System.out.println("获取key为name的value值:" + jedis.get("name"));
System.out.println("键key是否存在:" + jedis.exists("key"));
jedis.set("key", "aa", "bb");//如果不存在,设置默认值
}
/**
* <strong>list</strong>
* http://www.cnblogs.com/stephen-liu74/archive/2012/03/16/2351859.html
* 主要的就是(lr)pop/()lrpush就决定了它能够左(右)插入右(左)取出,即可做队列又可做堆栈来用
*/
@Test
public void demoList(){
Jedis jedis = RedisCRUD.getJedis();
jedis.del("list");
//在头添加
jedis.lpush("list", "hadoop", "hbase", "hive", "pig", "zookeeper");//TODO 好像有错
//在末尾添加
jedis.rpush("list", "java");
//返回长度
jedis.llen("list");
//取值
List<String> list = jedis.lrange("list", 0, -1);
for (String string : list) {
System.out.println(string);
}
}
/**
* <strong>set </strong>
* http://www.cnblogs.com/stephen-liu74/archive/2012/02/15/2352512.html
* 可以使用Redis的Set数据类型跟踪一些唯一性数据,比如访问某一博客的唯一IP地址信息。
* 对于此场景,我们仅需在每次访问该博客时将访问者的IP存入Redis中,Set数据类型会自动保证IP地址的唯一性。
*/
@Test
public void demoSet(){
Jedis jedis = RedisCRUD.getJedis();
jedis.sadd("city1", "北京","上海","重庆","天津");
System.out.println("取出最上面的:" + jedis.spop("city1"));//随机的移除并返回Set中的某一成员
System.out.println("随机取出一个值:" + jedis.srandmember("city1"));//和SPOP一样,随机的返回Set中的一个成员,不同的是该命令并不会删除返回的成员。
jedis.sadd("city2", "北京","上海","广州","深圳");
System.out.println("交集:"+ jedis.sinter("city1", "city2"));
System.out.println("并集:"+ jedis.sunion("city1", "city2"));
System.out.println("差集:"+ jedis.sdiff("city1", "city2"));
}
/**
* <strong>map</strong>
* http://www.cnblogs.com/stephen-liu74/archive/2012/03/19/2352932.html
*/
@Test
public void demoMap(){
Jedis jedis = RedisCRUD.getJedis();
jedis.hset("Mcity1", "c1", "北京");
System.out.println("取值:" + jedis.hget("Mcity1", "c1"));
Map<String,String> mcity = new HashMap<String, String>();
mcity.put("c1", "桂林");
mcity.put("c2", "天津");
mcity.put("c3", "合肥");
jedis.hmset("Mcity2", mcity);
List<String> list = jedis.hmget("Mcity2", "c1","c2","c3");
for (String string : list) {
System.out.println(string);
}
System.out.println(jedis.hlen("Mcity2"));
}
/**
* <strong>other</strong>
* @throws InterruptedException
*/
@Test
public void other() throws InterruptedException{
Jedis jedis = RedisTest.getJedis();
jedis.flushDB();//执行删除,在某个db环境下执行的话,只删除当前db的数据
jedis.flushAll();//删除所有现有的数据库,而不仅仅是当前选择的一个的键。此命令不会失败。
/*System.out.println("设置 key001的过期时间为5秒:" + jedis.expire("key001", 5));
// 查看某个key的剩余生存时间,单位【秒】.永久生存或者不存在的都返回-1
System.out.println("查看key001的剩余生存时间:" + jedis.ttl("key001"));
// 移除某个key的生存时间
System.out.println("移除key001的生存时间:" + jedis.persist("key001"));
//将当前db的key移动到给定的db当中
System.out.println("将当前db的key移动到给定的db当中:" + jedis.move("key001", 1));*/
//SETEX:key seconds value,将值value关联到key,并将key的生存时间设为seconds(以秒为单位)
System.out.println(jedis.setex("a", 3, "5-15,value"));
System.out.println(jedis.get("a"));
Thread.sleep(4000);
System.out.println(jedis.get("a"));
//MSET:key value [key value ...]同时设置一个或多个key-value对。
jedis.mset("aa","111","bb","222");
//dbSize是多少个key的个数
System.out.println(jedis.dbSize());
}
}