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) {
System.out.println("****************");
//清理整个Redis
jedis.flushDB();
//添加元素
jedis.hset("user", "name", "张三");
jedis.hset("user", "sex", "男");
jedis.hset("user", "age", "10");
//输出所有值
System.out.println("user:"+jedis.hvals("user"));
System.out.println("****************");
//删除某个键值
jedis.hdel("user", "sex");
System.out.println("user:"+jedis.hvals("user"));
System.out.println("****************");
//整型键值加数
jedis.hincrBy("user", "age", 10);
System.out.println("user:"+jedis.hvals("user"));
System.out.println("****************");
//判断某个键值是否存在
System.out.println("user中是否存在age:"+jedis.hexists("user", "sex"));
System.out.println("****************");
//批量获取键值
System.out.println("批量获取键值:"+jedis.hmget("user", "name","age"));
}
public static void redisSortedSetTest(Jedis jedis) {
System.out.println("****************");
//清理整个Redis
jedis.flushDB();
//添加元素
jedis.zadd("score", 1.0, "100");
jedis.zadd("score", 2.0, "90");
jedis.zadd("score", 6.0, "80");
jedis.zadd("score", 7.0, "70");
jedis.zadd("score", 4.0, "60");
System.out.println("score的元素:"+jedis.zrange("score", 0, -1));
//删除元素
jedis.zrem("score", "60");
System.out.println("score的元素:"+jedis.zrange("score", 0, -1));
//获取元素个数
System.out.println("score的元素个数:"+jedis.zcard("score"));
//获取指定权重的元素
System.out.println("score的元素个数:"+jedis.zcount("score", 1.0, 3.0));
//获取指定元素的权重
System.out.println("80的权重:"+jedis.zscore("score", "80"));
//获取指定下标的元素
System.out.println("指定下标的元素:"+jedis.zrange("score", 1, 2));
}
public static void redisSetTest(Jedis jedis) {
System.out.println("****************");
//清理整个Redis
jedis.flushDB();
//添加元素
jedis.sadd("num", "1");
jedis.sadd("num", "2");
jedis.sadd("num", "3");
jedis.sadd("num", "4");
jedis.sadd("num", "5");
System.out.println("num的元素:"+jedis.smembers("num"));
System.out.println("****************");
//删除指定集合内元素
jedis.srem("num", "3");
System.out.println("num删除后的元素:"+jedis.smembers("num"));
//判断某个元素是否在指定集合内
System.out.println("4是否在num内:"+jedis.sismember("num", "4"));
//交集并集
jedis.sadd("code", "4");
jedis.sadd("code", "5");
jedis.sadd("code", "6");
jedis.sadd("code", "7");
jedis.sadd("code", "8");
System.out.println("num与code的交集:"+jedis.sinter("num","code"));
System.out.println("num与code的并集:"+jedis.sunion("num","code"));
System.out.println("num与code的差集:"+jedis.sdiff("num","code"));
}
public static void redisListTest(Jedis jedis) {
System.out.println("****************");
//清理整个Redis
jedis.flushDB();
//添加到左边
jedis.lpush("user", "李四");
jedis.lpush("user", "张三");
//添加到右边
jedis.lpush("user", "王五");
jedis.lpush("user", "赵六");
//获取指定位置的元素,可以用于分页,-1获取所有,其他获取指定位置数
System.out.println(jedis.lrange("user", 0, -1));
System.out.println("****************");
//删除最左边的元素
jedis.lpop("user");
//删除最右边的元素
jedis.rpop("user");
System.out.println("执行删除动作后的元素:"+jedis.lrange("user", 0, -1));
System.out.println("****************");
//删除重复元素个数,先添加的先删除
jedis.lpush("user", "王五");
jedis.lpush("user", "王五");
jedis.lpush("user", "王五");
System.out.println("执行删除动作前的user元素:"+jedis.lrange("user", 0, -1));
System.out.println("****************");
jedis.lrem("user", 3, "王五");
System.out.println("执行删除动作后的user元素:"+jedis.lrange("user", 0, -1));
System.out.println("****************");
//删除指定区间外的元素
jedis.rpush("num", "1");
jedis.rpush("num", "2");
jedis.rpush("num", "3");
jedis.rpush("num", "4");
jedis.rpush("num", "5");
System.out.println("执行删除动作前的num元素:"+jedis.lrange("num", 0, -1));
System.out.println("****************");
jedis.ltrim("num", 1, 2);
System.out.println("执行删除动作后的num元素:"+jedis.lrange("num", 0, -1));
//更改列表中指定元素值
jedis.lset("num", 1, "4");
System.out.println("执行更改动作后的num元素:"+jedis.lrange("num", 0, -1));
//获取list长度
System.out.println("num集合长度:"+jedis.llen("num"));
//获取下标为1的元素
System.out.println("num中下标为1的元素"+jedis.lindex("num", 1));
//排序
jedis.rpush("num", "1");
jedis.rpush("num", "5");
jedis.rpush("num", "3");
jedis.rpush("num", "6");
System.out.println("排序前num的元素:"+jedis.lrange("num", 0, -1));
SortingParams sortingParameters = new SortingParams();
sortingParameters.alpha();
sortingParameters.limit(0, -1);
System.out.println("排序后num的元素:"+jedis.sort("num", sortingParameters));
}
public static void redisStringTest(Jedis jedis) {
System.out.println("****************");
//清理整个Redis
jedis.flushDB();
//存入键值对
jedis.set("name", "张三");
System.out.println("获取name:"+jedis.get("name"));
System.out.println("****************");
//判断键值是否存在
System.out.println("判断name是否存在:"+jedis.exists("name"));
//移除键值对
jedis.del("name");
//设置键值对失效时间为2秒
jedis.expire("username", 2);
try {
Thread.sleep(3000);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("3秒后username是否存在:"+jedis.exists("username"));
System.out.println("****************");
//查找某键值
jedis.set("usersex", "男");
Set<String> keys = jedis.keys("usersex");
for (String key:keys) {
System.out.println(key);
}
//查找某键值生存剩余时间
System.out.println("键值usersex生存剩余时间:"+jedis.ttl("usersex"));
System.out.println("****************");
//一次性存入多个键值
jedis.mset("user","张三","sex","男","age","6");
//一次性获取多个键值
System.out.println(jedis.mget("user","sex","age"));
System.out.println("****************");
//在原来的value后面进行追加
jedis.append("user", "琪");
System.out.println(jedis.mget("user","sex","age"));
System.out.println("****************");
//截取指定key的value
System.out.println(jedis.getrange("user", 0, 2));
//key值存在时添加,不存在时不处理
jedis.setnx("user", "李四");
}
}