package com;
import static org.junit.Assert.fail;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Pipeline;
/**
* REDIS的几种数据结构
* @author lenovo
*
*/
public class Demo2 {
/**
* 字符串类型
*/
@Test
public void testString()
{
Jedis jedis = new Jedis("192.168.126.129",6379);
Pipeline pipeline = jedis.pipelined();
System.out.println(pipeline.set("a", "1")); //打印Response string
System.out.println(pipeline.set("b", "2"));
System.out.println(pipeline.set("c", "3"));
System.out.println(pipeline.set("a", "11"));
System.out.println(pipeline.set("c", "333")); //回覆盖之前的数据
// List<Object> results = pipeline.syncAndReturnAll();//管道提交并返回
pipeline.sync();//管道提交,在提交之前不能进行get查询操作
System.out.println(jedis.get("c")); //返回具体value
System.out.println(jedis.get("d")); //如果此key不存在则返回null
System.out.println( jedis.del("a")); //删除成功返回1
System.out.println( jedis.del("d"));//删除不存在的key返回0
jedis.disconnect();
}
/**
* 列表类型
*/
@Test
public void testList()
{
Jedis jedis = new Jedis("192.168.126.129",6379);
Pipeline pipeline = jedis.pipelined();
pipeline.rpush("mylist", "a");//将数据写入列表的右侧,lpush将数据写入列表左侧
pipeline.rpush("mylist", "b");
pipeline.rpush("mylist", "c");
pipeline.rpush("mylist", "a"); //同一个value可重复出现
pipeline.sync(); //提交
System.out.println(jedis.lrange("mylist", 0, 1));//返回指定x到y之间的数据包含xy位置
System.out.println(jedis.lrange("mylist", 0, -1));//返回全部数据
System.out.println(jedis.lindex("mylist", 0));//返回指定位置的数据
System.out.println(jedis.lindex("mylist", 110));//返回指定位置的数据,此位置不存在则返回null
System.out.println(jedis.lpop("mylist")); //返回列表左侧的第一个数据,并在列表里删除此数据
jedis.del("mylist"); //删除列表
jedis.disconnect();
}
/**
* 集合类型
*/
@Test
public void testSet()
{
Jedis jedis = new Jedis("192.168.126.129",6379);
Pipeline pipeline = jedis.pipelined();
System.out.println(pipeline.sadd("mySet", "a"));
System.out.println( pipeline.sadd("mySet", "b"));
System.out.println(pipeline.sadd("mySet", "c"));
System.out.println(pipeline.sadd("mySet", "a")); //重复元素不会被添加
pipeline.sync();
System.out.println(jedis.smembers("mySet")); //返回的顺序与添加的顺序相反,添加abc返回cba
System.out.println(jedis.sismember("mySet", "a"));//判断此集合是否存在a元素,存在返回true
System.out.println(jedis.sismember("mySet", "x")); // 不存在返回false
System.out.println(jedis.srem("mySet", "a"));//判断此集合里是否存在a,如果存在则将a移除,并返回1
System.out.println(jedis.srem("mySet", "x"));//移除不存在的元素,返回0
jedis.disconnect();
}
/**
* 散列类型
*/
@Test
public void testHash()
{
Jedis jedis = new Jedis("192.168.126.129",6379);
Pipeline pipeline = jedis.pipelined();
pipeline.hset("myHash", "a", "1");
pipeline.hset("myHash", "b", "2");
pipeline.hset("myHash", "c", "3");
pipeline.hset("myHash", "a", "4"); //(a,1)将被覆盖成(a,4)
pipeline.sync();
System.out.println(jedis.hgetAll("myHash")); //获取此散列全部key value
System.out.println(jedis.hget("myHash", "a")); //返回此散列里具体key的value
System.out.println(jedis.hget("myHash", "x"));//此KEY不存在则返回null
jedis.disconnect();
}
/**
* 有序集合
* 有序集合的value必须为浮点类型
*/
@Test
public void voidZset()
{
Jedis jedis = new Jedis("192.168.126.129",6379);
Pipeline pipeline = jedis.pipelined();
pipeline.zadd("myZset", 1.0,"a");
pipeline.zadd("myZset", 2.0,"b");
pipeline.zadd("myZset", 3.0,"c");
pipeline.zadd("myZset", 0.1,"a"); //a将被覆盖为0.1
pipeline.zadd("myZset", 2.0,"x");
pipeline.sync();
System.out.println(jedis.zrange("myZset", 0, -1)); //返回下标a到b个数据,-1=返回全部。按照数值从小到大排序
System.out.println(jedis.zrangeByScore("myZset", -10, 2.0));//返回此有序集合里分值在a到b之间的数据,包含a,b.按照从小到大排序
jedis.disconnect();
}
@Test
public void test() {
fail("Not yet implemented");
}
}