终于到了用我们的Java程序来操纵Redis数据库的环节啦~还是程序写着舒坦
它是官方推荐的Java连接开发工具!使用Java操纵Redis的中间件!说白了就是一个包,我们导入程序就可以使用了~
那么到底怎样去使用它呢?别急慢慢来~
另外,json的包我们也可能会用得到,也一起导进来!
<dependencies>
<dependency>
<groupId>redis.clientsgroupId>
<artifactId>jedisartifactId>
<version>3.2.0version>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>fastjsonartifactId>
<version>1.2.62version>
dependency>
dependencies>
注意:我这里用的是windows系统连接本地的服务,就得在windows中也装上redis,并启动服务,才可连接成功!
package com.gang;
/*
Description:测试连接
Author:32259
Time:2020四月2020/4/316:15
*/
import redis.clients.jedis.Jedis;
public class TestPing {
public static void main(String[] args) {
//new Jedis对象即可
Jedis jedis = new Jedis("127.0.0.1", 6379);
//jedis所有的方法都是我之前博客里写的那些命令!只不过在这里成为了方法
System.out.println(jedis.ping());
}
}
下面是一些基本方法的使用测试!对应我以前博客中redis的命令,这里只不过变成了方法而已!
package com.gang;
/*
Description:测试普通键key
Author:32259
Time:2020四月2020/4/316:40
*/
import redis.clients.jedis.Jedis;
public class TestKey {
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1", 6379);
System.out.println("清空数据:"+jedis.flushDB());
System.out.println("判断某个键是否存在:"+jedis.exists("username"));
System.out.println("新增<'username','fanmenggang'>的键值对:"+jedis.set("username","fanmenggang"));
System.out.println("新增<'password','123456'>的键值对:"+jedis.set("password","123456"));
System.out.println("查看系统中所有的键:"+jedis.keys("*"));
System.out.println("删除键password:"+jedis.del("password"));
System.out.println("判断键password是否存在:"+jedis.exists("password"));
System.out.println("查看键username所存储的值的类型:"+jedis.type("username"));
System.out.println("随机返回key中的一个:"+jedis.randomKey());
System.out.println("重命名key:"+jedis.rename("username","root"));
System.out.println("取出改名后root键的值:"+jedis.get("root"));
System.out.println("切换到2号数据库:"+jedis.select(2));
System.out.println("查看2号数据库中的所有键(当然里面没存东西):"+jedis.keys("*"));
System.out.println("新增<'username','gangzi'>的键值对:"+jedis.set("username","gangzi"));
System.out.println("切换回0号数据库:"+jedis.select(0));
System.out.println("查看0号数据库中的所有键:"+jedis.keys("*"));
System.out.println("删除当前数据库中的所有key:"+jedis.flushDB());
System.out.println("返回当前数据库的大小(key的数目):"+jedis.dbSize());
System.out.println("清空所有的数据库:"+jedis.flushAll());
System.out.println("查看2号数据库中还有没有username这个键:"+jedis.keys("*"));
}
}
package com.gang;
/*
Description:测试String类型
Author:32259
Time:2020四月2020/4/317:22
*/
import redis.clients.jedis.Jedis;
import java.util.concurrent.TimeUnit;
public class TestString {
public static void main(String[] args){
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.flushDB();
System.out.println("==========增加数据========");
System.out.println(jedis.set("k1","v1"));
System.out.println(jedis.set("k2","v2"));
System.out.println(jedis.set("k3","v3"));
System.out.println("删除键k2:"+jedis.del("k2"));
System.out.println("获取键k2:"+jedis.get("k2"));
System.out.println("修改k1:"+jedis.set("k1","v1changed"));
System.out.println("获取k1的值:"+jedis.get("k1"));
System.out.println("在k3后面拼接值:"+jedis.append("k3","End"));
System.out.println("获取k3的值:"+jedis.get("k3"));
System.out.println("增加多个键值对:"+jedis.mset("key1","value1","key2","value2"));
System.out.println("获取多个键的值:"+jedis.mget("k1","k2","key1","key2"));
System.out.println("删除多个键:"+jedis.del("k1","key1"));
jedis.flushDB();
System.out.println("==========新增键值对防止覆盖原先值=========");
System.out.println(jedis.setnx("k1","v1"));
System.out.println(jedis.setnx("k2","v2"));
System.out.println(jedis.setnx("k2","v8"));
System.out.println(jedis.get("k1"));
System.out.println(jedis.get("k2"));
System.out.println("==========新增键值对并设置有效时间=========");
System.out.println(jedis.setex("k3",5,"v3"));
System.out.println(jedis.get("k3"));
try {
//休眠6秒
TimeUnit.SECONDS.sleep(6);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(jedis.get("k3"));
System.out.println("========获取原来的值,并更新为新的值=========");
System.out.println(jedis.getSet("k2","v2xinzhi"));
System.out.println(jedis.get("k2"));
System.out.println("截取指定下标的字符串:"+jedis.getrange("k2",3,6));
}
}
package com.gang;
/*
Description:测试List
Author:32259
Time:2020四月2020/4/319:43
*/
import redis.clients.jedis.Jedis;
public class TestList {
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.flushDB();
System.out.println("=========添加一个List========");
jedis.lpush("collections","ArrayList","Vector","Stack","HashMap");
jedis.lpush("collections","HashSet");
jedis.lpush("collections","TreeSet");//从左边往进加
jedis.rpush("collections","HashMap");//从右边往进加
jedis.lpush("collections","TreeMap");
System.out.println("collections中的内容:"+jedis.lrange("collections",0,-1));//-1代表倒数第一个
System.out.println("collections中0到3区间的内容:"+jedis.lrange("collections",0,3));
System.out.println("============================");
//删除列表指定的值,第二个参数为删除的个数(有重复时)!后add进去的值先被删掉,类似于出栈!
System.out.println("删除指定个数的元素:"+jedis.lrem("collections",2,"HashMap"));
System.out.println("collections中的内容:"+jedis.lrange("collections",0,-1));
System.out.println("删除下标0-3区间之外的元素:"+jedis.ltrim("collections",0,3));
System.out.println("collections中的内容:"+jedis.lrange("collections",0,-1));
System.out.println("collections列表出栈(左):"+jedis.lpop("collections"));
System.out.println("collections中的内容:"+jedis.lrange("collections",0,-1));
System.out.println("collections列表出栈(右):"+jedis.rpop("collections"));
System.out.println("collections中的内容:"+jedis.lrange("collections",0,-1));
System.out.println("修改指定下标1的内容:"+jedis.lset("collections",1,"hahaaha"));
System.out.println("collections中的内容:"+jedis.lrange("collections",0,-1));
System.out.println("============================");
System.out.println("collections的长度:"+jedis.llen("collections"));
System.out.println("获取指定下标1的元素:"+jedis.lindex("collections",1));
System.out.println("==============排序==============");
jedis.lpush("sortedList","5","6","4","3","9","1");
System.out.println("排序前:"+jedis.lrange("sortedList",0,-1));
System.out.println("排序后:"+jedis.sort("sortedList"));
}
}
package com.gang;
/*
Description:测试Set
Author:32259
Time:2020四月2020/4/320:13
*/
import redis.clients.jedis.Jedis;
public class TestSet {
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.flushDB();
System.out.println("===============向集合中添加元素(不重复)================");
System.out.println(jedis.sadd("set","e1","e3","e2","e5","e7","e4","e0","e8"));
System.out.println(jedis.sadd("set","e6"));
System.out.println(jedis.sadd("set","e6"));
System.out.println("set集合中所有的元素为:"+jedis.smembers("set"));
System.out.println("删除一个指定元素e0:"+jedis.srem("set","e0"));
System.out.println("set集合中所有的元素为:"+jedis.smembers("set"));
System.out.println("删除多个指定元素e7,e5:"+jedis.srem("set","e7","e5"));
System.out.println("set集合中所有的元素为:"+jedis.smembers("set"));
System.out.println("随机的移除集合中的一个元素:"+jedis.spop("set"));
System.out.println("随机的移除集合中的一个元素:"+jedis.spop("set"));
System.out.println("set集合中所有的元素为:"+jedis.smembers("set"));
System.out.println("set集合中的元素个数:"+jedis.scard("set"));
System.out.println("e1是否在set集合中:"+jedis.sismember("set","e1"));
System.out.println("========================================================");
System.out.println(jedis.sadd("set1","e1","e3","e2","e5","e7","e4","e6"));
System.out.println(jedis.sadd("set2","e1","e3","e0","e5","e8","e4","e6"));
System.out.println("将set1中的元素删掉e1并将e1存入set3中:"+jedis.smove("set1","set3","e1"));
System.out.println("将set1中的元素删掉e5并将e5存入set3中:"+jedis.smove("set1","set3","e5"));
System.out.println("set1集合中所有的元素为:"+jedis.smembers("set1"));
System.out.println("set3集合中所有的元素为:"+jedis.smembers("set3"));
System.out.println("=====================集合运算=======================");
System.out.println("set1集合中所有的元素为:"+jedis.smembers("set1"));
System.out.println("set2集合中所有的元素为:"+jedis.smembers("set2"));
System.out.println("set1与set2集合的并集:"+jedis.sunion("set1","set2"));
System.out.println("set1与set2集合的交集:"+jedis.sinter("set1","set2"));
System.out.println("set1与set2集合的差集:"+jedis.sdiff("set1","set2"));//set1与set2中去掉交集后剩余的元素
jedis.sinterstore("set4","set1","set2");//求交集并将交集保存在dstkey中
System.out.println("set4集合中所有的元素为:"+jedis.smembers("set4"));
}
}
package com.gang;
/*
Description:测试Hash
Author:32259
Time:2020四月2020/4/321:31
*/
import redis.clients.jedis.Jedis;
import java.util.HashMap;
public class TestHash {
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.flushDB();
HashMap<String, String> map = new HashMap<>();
map.put("k1","v1");
map.put("k2","v2");
map.put("k3","v3");
map.put("k4","v4");
//添加元素
jedis.hmset("hash",map);
//还可以这么添加
jedis.hset("hash","k5","v5");
System.out.println("散列hash的所有键值对:"+jedis.hgetAll("hash"));
System.out.println("散列hash的所有键:"+jedis.hkeys("hash"));
System.out.println("散列hash的所有值:"+jedis.hvals("hash"));
System.out.println("将k6的保存的值加上一个整数,如果k6不存在则添加k6:"+jedis.hincrBy("hash","k6",5));
System.out.println("散列hash的所有键值对:"+jedis.hgetAll("hash"));
System.out.println("将k6的保存的值加上一个整数,如果k6不存在则添加k6:"+jedis.hincrBy("hash","k6",5));
System.out.println("散列hash的所有键值对:"+jedis.hgetAll("hash"));
System.out.println("删除一个或者多个键值对:"+jedis.hdel("hash","k1","k3"));
System.out.println("散列hash的所有键值对:"+jedis.hgetAll("hash"));
System.out.println("散列hash的所有键值对个数:"+jedis.hlen("hash"));
System.out.println("判断k2是否在hash中:"+jedis.hexists("hash","k2"));
System.out.println("判断k1是否在hash中:"+jedis.hexists("hash","k1"));
System.out.println("获取hash中的一个值:"+jedis.hmget("hash","k4"));
System.out.println("获取hash中的多个值:"+jedis.hmget("hash","k4","k6"));
}
}
package com.gang;
/*
Description:测试Zset
Author:32259
Time:2020四月2020/4/321:48
*/
import redis.clients.jedis.Jedis;
public class TestZset {
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.flushDB();
jedis.zadd("myset",1,"one");
jedis.zadd("myset",2,"two");
jedis.zadd("myset",3,"three");
System.out.println("查看全部的值:"+jedis.zrange("myset",0,-1));
jedis.flushDB();
jedis.zadd("salsry",2500,"zhangsan");
jedis.zadd("salsry",500,"lisi");
jedis.zadd("salsry",5000,"wangwu");
System.out.println("由高到低排序:"+jedis.zrangeByScore("salsry","-inf","+inf"));
System.out.println("由高到低排序:"+jedis.zrevrangeByScore("salsry","+inf","-inf"));
System.out.println("查看全部的值:"+jedis.zrange("salsry",0,-1));
jedis.zrem("salsry","lisi");
System.out.println("查看全部的值:"+jedis.zrange("salsry",0,-1));
System.out.println("查看所有元素的个数:"+jedis.zcard("salsry"));
jedis.flushDB();
jedis.zadd("myset",1,"one");
jedis.zadd("myset",2,"two");
jedis.zadd("myset",3,"three");
jedis.zadd("myset",4,"four");
System.out.println("获取指定区间元素的个数:"+jedis.zcount("myset", 0, 3));
}
}
package com.gang;
/*
Description:测试事务
Author:32259
Time:2020四月2020/4/322:15
*/
import com.alibaba.fastjson.JSONObject;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Transaction;
public class TestTX {
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1", 6379);
JSONObject jsonObject = new JSONObject();
jsonObject.put("name","fanmenggang");
jsonObject.put("sex","nan");
//开启事务
Transaction multi = jedis.multi();
String s = jsonObject.toJSONString();
try {
multi.set("user1",s);
multi.set("user2","haha");
multi.exec();//执行事务
}catch (Exception e){
multi.discard();//放弃事务
e.printStackTrace();
}finally {
System.out.println(jedis.get("user1"));
System.out.println(jedis.get("user2"));
jedis.close();//关闭连接
}
}
}
package com.gang;
/*
Description:测试事务
Author:32259
Time:2020四月2020/4/322:15
*/
import com.alibaba.fastjson.JSONObject;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Transaction;
public class TestTX {
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1", 6379);
JSONObject jsonObject = new JSONObject();
jsonObject.put("name","fanmenggang");
jsonObject.put("sex","nan");
//开启事务
Transaction multi = jedis.multi();
String s = jsonObject.toJSONString();
try {
multi.set("user1",s);
multi.set("user2","haha");
multi.incrBy("user2",5);//模拟运行时异常,语法错误,字符串不能进行自增,证明事务不保证原子性
multi.exec();//执行事务
}catch (Exception e){
multi.discard();//放弃事务
e.printStackTrace();
}finally {
System.out.println(jedis.get("user1"));
System.out.println(jedis.get("user2"));
jedis.close();//关闭连接
}
}
}