package com.ww.exercise;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.junit.Before;
import org.junit.Test;
import redis.clients.jedis.Jedis;/**
* 练习redis对接java
* @author 旺旺*/
public classRedisExercise {private staticJedis jedis;/*public static void setJedis() {
//连接到本地redis服务器
jedis = new Jedis("127.0.0.1",6379);
//验证用户密码
jedis.auth("zww");
System.out.println("登入Redis数据库");
}*/
public static voidmain(String[] args) {
jedis= new Jedis("127.0.0.1",6379);//验证用户密码
jedis.auth("zww");
System.out.println("登入Redis数据库");
exerciseString();
exerciseHash();
exerciseList();
exerciseSet();
exerciseSSet();
}/**
* 联系String类型的操作*/
public static voidexerciseString() {//setJedis();//添加数据
jedis.set("name", "zww");//如果已存在,覆盖
System.out.println("新增." + jedis.get("name"));//拼接数据
jedis.append("nane", "is my name");
System.out.println("拼接." + jedis.get("name"));//删除数据
jedis.del("name");
System.out.println("删除." + jedis.get("name"));//批量新增数据
jedis.mset("name","zww","age","20","email","www.ww.cn");
jedis.decr("age");//Redis Decr 命令将 key 中储存的数字值减一。//如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。//如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。//本操作的值限制在 64 位(bit)有符号数字表示之内。
System.out.println("批量." + jedis.get("name")+ jedis.get("age")+ jedis.get("email"));
}/**
* 联系Hash类型的操作*/@Testpublic static voidexerciseHash() {//添加数据
Map user = new HashMap();
user.put("name", "zww");
user.put("age", "20");
user.put("email", "www.ww");
jedis.hmset("user", user);//取出user中的name,结果是一个泛型的List//第一个参数是存入redis中map对象的key,后面跟的是放入map中的对象的key,后面的key是可变参数
List users = jedis.hmget("user", "name","age","email");
System.out.println("新增." +users);//拼接数据
jedis.hset("user", "hobby", "guitar");
System.out.println("拼接." + jedis.hmget("user", "name","age","email","hobby"));//拿到hash中所有key,再通过迭代器得到值
Iterator userKey = jedis.hkeys("user").iterator();while(userKey.hasNext()) {
String key=userKey.next();
System.out.println(key + ":" + jedis.hget("user", key));
}//部分删除数据
jedis.hdel("user", "email");
System.out.println("删除." + jedis.hmget("user", "name","age","email","hobby"));
System.out.println("age:" + jedis.hmget("user", "age")); //因为删除了,所以返回的是null
System.out.println("user的键中存放的值的个数:" + jedis.hlen("user")); //返回key为user的键中存放的值的个数
System.out.println("是否存在key为user的记录:" + jedis.exists("user"));//是否存在key为user的记录 返回true
System.out.println("user对象中的所有key:" + jedis.hkeys("user"));//返回user对象中的所有key
System.out.println("user对象中的所有value:" + jedis.hvals("user"));//返回map对象中的所有value//删除整个hash
jedis.del("user");
System.out.println("删除后是否存在key为user的记录:" + jedis.exists("user"));//是否存在key为user的记录
}/**
* 联系List类型的操作*/@Testpublic static voidexerciseList() {//添加数据
jedis.lpush("framework", "spring");
jedis.lpush("framework", "spring");//可以相同?
jedis.lpush("framework", "mybatis");
jedis.lpush("framework", "struts2");
List framework = jedis.lrange("framework", 0, -1);//结果是一个泛型的List
System.out.println("新增." +framework);//部分删除数据
String pop = jedis.lpop("framework");//移除最左边的数据
System.out.println("移除." +pop);
System.out.println("移除后." + jedis.lrange("framework", 0, -1));
}/**
* 联系Set类型的操作*/@Testpublic static voidexerciseSet() {//添加数据
jedis.sadd("database", "redis");
jedis.sadd("database", "oracle");
jedis.sadd("database", "mysql");
jedis.sadd("databas", "redis");//可以相同?
Set database = jedis.smembers("database");//结果是一个泛型的Set
System.out.println("新增."+database);//删除
jedis.srem("database","oracle");//移除成员
System.out.println("user中的value:"+jedis.smembers("database"));//获取所有加入user的value
System.out.println("chx是否是user中的元素:"+jedis.sismember("database","redis"));//判断chx是否是user集合中的元素
System.out.println("集合中的一个随机元素:"+jedis.srandmember("database"));//返回集合中的一个随机元素
System.out.println("user中元素的个数:"+jedis.scard("database"));//再来个
jedis.sadd("database1", "redis");
jedis.sadd("database1", "db2");
jedis.sadd("database1", "mysql");
System.out.println("获取两个数据库的交集:"+jedis.sinter("database","database1"));
System.out.println("获取两个数据库的并集:"+jedis.sunion("database","database1"));
}/**
* 联系SSet类型的操作*/@Testpublic static voidexerciseSSet() {//添加数据
jedis.zadd("bat", 1,"baidu");
jedis.zadd("bat", 2,"ali");
jedis.zadd("bat", 3,"tengx");
jedis.zadd("bat", 3,"zww");//覆盖
Set database = jedis.zrange("bat", 0, -1);//结果是一个泛型的Set
System.out.println("所有成员:"+database);//删除成员//jedis.zrem("bat", "zww");
jedis.zremrangeByScore("bat", 3, 3);//通过序号删除指定成员
System.out.println("所有成员:"+database);
}/**
* 联系 类型的操作*/@Testpublic voidexercise() {
}
}