package redis;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.SortingParams;
public class RedisJava {
/**
* @param args
*/
public static void main(String[] args) {
Jedis jedis = new Jedis("localhost");
System.out.println("连接redis:"+jedis.ping());
redisHashTest(jedis);
//redisSortedSetTest(jedis);
//redisSetTest(jedis);
//redisListTest(jedis);
//redisStringTest(jedis);
}
public static void redisHashTest(Jedis jedis) {
//添加元素
jedis.hset("hash", "name", "张三");
jedis.hset("hash", "sex", "未知");
jedis.hset("hash", "age", "10");
//输出所有值
System.out.println("***输出所有值***"+jedis.hvals("hash"));
//删除某个键值
jedis.hdel("hash", "sex");
System.out.println("***输出所有值***"+jedis.hvals("hash"));
//整型键值加数
jedis.hincrBy("hash", "age", 10);
System.out.println("***整型键值加数***"+jedis.hget("hash", "age"));
//判断某个键值是否存在
System.out.println("***判断某个键值是否存在***"+jedis.hexists("hash", "age"));
}
public static void redisSortedSetTest(Jedis jedis) {
//添加元素
jedis.zadd("score", 1.0, "80");
jedis.zadd("score", 2.0, "70");
jedis.zadd("score", 3.0, "60");
jedis.zadd("score", 1.2, "50");
jedis.zadd("score", 1.3, "40");
System.out.println("***所有元素***"+jedis.zrange("score", 0, -1));
//删除元素
jedis.zrem("score", "60");
System.out.println("***所有元素***"+jedis.zrange("score", 0, -1));
//获取元素个数
System.out.println("***元素个数***"+jedis.zcard("score"));
//获取指定权重的元素个数
System.out.println("***元素权重个数***"+jedis.zcount("score", 1.0, 2.0));
//获取指定元素的权重
System.out.println("***元素权重***"+jedis.zscore("score", "50"));
//获取指定下标的元素
System.out.println("***获取指定下标的元素***"+jedis.zrange("score", 0, 1));
}
public static void redisSetTest(Jedis jedis) {
//添加元素
jedis.sadd("num", "1","2","3","4");
System.out.println("***集合***"+jedis.smembers("num"));
//删除指定集合内元素
jedis.srem("num", "2","3");
System.out.println("***集合***"+jedis.smembers("num"));
//判断某个元素是否在指定集合内
System.out.println("***判断某个元素是否在指定集合内***"+jedis.sismember("num", "3"));
//交集
jedis.sadd("code", "7","8","9","10");
jedis.sadd("tax", "1","2","9","10");
System.out.println("***交集***"+jedis.sinter("tax", "code"));
//并集
System.out.println("***并集***"+jedis.sunion("tax", "code"));
//差
System.out.println("***差***"+jedis.sunion("tax", "code"));
}
public static void redisListTest(Jedis jedis) {
//添加元素
jedis.lpush("user", "张三");
jedis.lpush("user", "李四");
jedis.lpush("user", "王五");
jedis.lpush("user", "赵六");
System.out.println("获取指定位置的元素:"+jedis.lrange("user", 0, 2));
//删除最左边的元素
jedis.lpop("user");
System.out.println("删除最左边的元素:"+jedis.lrange("user", 0, -1));
//删除最右边的元素
jedis.rpop("user");
System.out.println("删除最右边的元素:"+jedis.lrange("user", 0, -1));
//删除重复元素个数,先添加的先删除
jedis.lpush("user", "李四");
jedis.lpush("user", "李四");
jedis.lpush("user", "李四");
System.out.println("获取所有的元素:"+jedis.lrange("user", 0, -1));
jedis.lrem("user", 2, "李四");
System.out.println("删除重复元素:"+jedis.lrange("user", 0, -1));
//删除指定区间外的元素
jedis.ltrim("user", 1, 2);
System.out.println("删除指定区间外的元素:"+jedis.lrange("user", 0, -1));
//更改列表中指定元素值
jedis.lset("user", 1, "王五,你好");
System.out.println("更改列表中指定元素值:"+jedis.lrange("user", 0, -1));
//获取list长度
System.out.println("获取list长度:"+jedis.llen("user"));
//获取下标为1的元素
System.out.println("获取下标为1的元素:"+jedis.lindex("user", 1));
//排序
jedis.lpush("num", "13");
jedis.lpush("num", "14");
jedis.lpush("num", "15");
jedis.lpush("num", "12");
jedis.lpush("num", "11");
SortingParams sortingParameters = new SortingParams();
sortingParameters.asc();
sortingParameters.alpha();
jedis.sort("num", sortingParameters);
System.out.println("排序后的list:"+jedis.lrange("num", 0, -1));
}
public static void redisStringTest(Jedis jedis) {
System.out.println("存入键值对:"+jedis.set("user", "张三"));
System.out.println("判断键值是否存在:"+jedis.exists("user"));
System.out.println("移除键值对:"+jedis.del("user"));
//设置键值对失效时间为2秒
System.out.println("存入键值对:"+jedis.set("user", "李四"));
System.out.println("设置键值对失效时间为2秒:"+jedis.expire("user", 2));
try {
Thread.sleep(1000);
System.out.println("键值对user剩余时间:"+jedis.ttl("user"));
Thread.sleep(2000);
System.out.println("2秒后键值对是否存在:"+jedis.exists("user"));
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("批量存入键值对:"+jedis.mset("userA", "王五","userB", "王五","userC", "王五"));
System.out.println("批量获取键值对:"+jedis.mget("userA","userB","userC"));
//查找某键值
//通过key进行检索,可能会造成堵塞引起卡顿。
Set<String> keys = jedis.keys("user*");
for (String key:keys) {
System.out.println(key);
}
//通过sacn扫描可能出现键值对重复。
ScanParams params = new ScanParams();
params.count(5);//扫描数量
params.match("user*");//匹配条件
ScanResult scanResult = jedis.scan("0", params);//游标,条件
List<String> result = scanResult.getResult();
for (String scan:result) {
System.out.println(scan);
}
//在原来的value后面进行追加
System.out.println("在原来的value后面追加:"+jedis.append("userA", ",你好"));
System.out.println("追加后的userA:"+jedis.get("userA"));
System.out.println("截取userA:"+jedis.getrange("userA", 0, -1));
//key值不存在时添加,存在时不处理
System.out.println("不存在就新增:"+jedis.setnx("userE", "赵六"));
}
}