1: 操作String数据类型
/**
* java操作redis中的String类型
*/
@Test
void test2() {
//创建jedis对象
Jedis jedis = new Jedis("127.0.0.1", 6379);
System.out.println("***********选择指定的数据库***********");
//选择指定的数据库
String select = jedis.select(0);
System.out.println("选择数据库:" + select);
System.out.println("***********查看当前数据库的大小***********");
//查看当前数据库的大小
Long dbSize = jedis.dbSize();
System.out.println("当前数据库的大小:" + dbSize);
//向redis中添加数据
jedis.set("k1", "v1");
jedis.set("k2", "k2");
jedis.set("k3", "k3");
jedis.set("k4", "k4");
jedis.set("name", "张三");
System.out.println("***********查看某个键对应值的数据类型***********");
//查看某个键对应值的数据类型
String type = jedis.type("k1");
System.out.println("查看某个键对应值的数据类型:" + type);
System.out.println("***********获取redis中全部的key***********");
//获取redis中全部的key
Set<String> keys = jedis.keys("*");
System.out.println(keys);
System.out.println("***********删除redis中的一个键值对***********");
//删除redis中的一个键值对
Long del = jedis.del("name");
System.out.println("删除redis中的一个键值对:" + del);
System.out.println("***********获取redis中全部的key-value***********");
Set<String> keys1 = jedis.keys("*");
for (String key : keys1) {
System.out.println(key + "====>" + jedis.get(key));
}
System.out.println("***********判断是否存在指定的key***********");
//判断是否存在指定的key
Boolean k1 = jedis.exists("k1");
System.out.println(k1);
System.out.println("***********判断指定的key的过期时间***********");
//判断指定的key的过期时间
Long k11 = jedis.ttl("k1");
System.out.println(k11);
System.out.println("***********向redis中添加多个key-value***********");
//向redis中添加多个key-value
String mSet = jedis.mset("city1", "上海", "city2", "北京", "city3", "西安");
System.out.println(mSet);
System.out.println("***********获取redis中的多个key-value***********");
//获取redis中的多个key-value
List<String> mGet = jedis.mget("city1", "city2", "city3");
System.out.println(mGet);
System.out.println("***********给redis中指定的key对应的值加一***********");
jedis.set("presence", "1");
//给redis中指定的key对应的值加一
Long incr = jedis.incr("presence");
System.out.println(incr);
System.out.println(jedis.get("presence"));
System.out.println("***********给redis中指定的key对应的值减一***********");
//给redis中指定的key对应的值减一
Long decr = jedis.decr("presence");
System.out.println(decr);
System.out.println(jedis.get("presence"));
System.out.println("***********给redis中指定的key对应的值加指定的步长***********");
//给redis中指定的key对应的值加指定的步长
Long incrBy = jedis.incrBy("presence", 10);
System.out.println(incrBy);
System.out.println(jedis.get("presence"));
System.out.println("***********给redis中指定的key对应的值减指定的步长***********");
//给redis中指定的key对应的值减指定的步长
Long decrBy = jedis.decrBy("presence", 10);
System.out.println(decrBy);
System.out.println(jedis.get("presence"));
System.out.println("***********清空redis中当前数据库的数据***********");
//清空redis中的数据
String s = jedis.flushDB();
System.out.println(s);
System.out.println("***********清空redis中所有数据库的数据***********");
//清空redis中所有数据库的数据
String s1 = jedis.flushAll();
System.out.println(s1);
//关闭jedis
jedis.close();
}
运行结果:
***********选择指定的数据库***********
选择数据库:OK
***********查看当前数据库的大小***********
当前数据库的大小:0
***********查看某个键对应值的数据类型***********
查看某个键对应值的数据类型:string
***********获取redis中全部的key***********
[name, k3, k4, k1, k2]
***********删除redis中的一个键值对***********
删除redis中的一个键值对:1
***********获取redis中全部的key-value***********
k3====>k3
k4====>k4
k1====>v1
k2====>k2
***********判断是否存在指定的key***********
true
***********判断指定的key的过期时间***********
-1
***********向redis中添加多个key-value***********
OK
***********获取redis中的多个key-value***********
[上海, 北京, 西安]
***********给redis中指定的key对应的值加一***********
2
2
***********给redis中指定的key对应的值减一***********
1
1
***********给redis中指定的key对应的值加指定的步长***********
11
11
***********给redis中指定的key对应的值减指定的步长***********
1
1
***********清空redis中当前数据库的数据***********
OK
***********清空redis中所有数据库的数据***********
OK
2: 操作List数据类型
/**
* java操作redis中的List类型
*/
@Test
void test3() {
//创建jedis对象
Jedis jedis = new Jedis("127.0.0.1", 6379);
System.out.println("***********向redis中添加List类型数据***********");
//向redis中从左边添加一个集合数据
Long lPush = jedis.lpush("list1", "a", "b", "c", "d");
System.out.println("从左边添加:" + lPush);
//查看list1集合中元素的个数
Long list11 = jedis.llen("list1");
System.out.println("list1集合中元素的个数:" + list11);
//从左边获取redis中的list1集合数据
List<String> list1 = jedis.lrange("list1", 0, -1);
System.out.println("获取集合数据:" + list1);
//从list1集合的左边弹出一个元素
String lPop = jedis.lpop("list1");
System.out.println("list1集合从左边弹出一个元素:" + lPop);
//从list1集合的右边弹出一个元素
String rPop = jedis.rpop("list1");
System.out.println("list1集合从右边弹出一个元素:" + rPop);
//查看list1集合中元素的个数
Long list12 = jedis.llen("list1");
System.out.println("list1集合中元素的个数:" + list12);
//向redis中从右边添加一个集合数据
Long rPush = jedis.rpush("list2", "a", "b", "c", "d");
System.out.println("从右边添加:" + rPush);
//查看list2集合中元素的个数
Long list2 = jedis.llen("list2");
System.out.println("list2集合中元素的个数: " + list2);
//从左边获取redis中的list2集合数据
List<String> list3 = jedis.lrange("list2", 0, -1);
System.out.println("获取集合数据:" + list3);
//从list2集合的左边弹出一个元素
String lPop2 = jedis.lpop("list2");
System.out.println("list2集合从左边弹出一个元素: " + lPop2);
//从list2集合的右边弹出一个元素
String rPop2 = jedis.rpop("list2");
System.out.println("list2集合从右边弹出一个元素: " + rPop2);
//查看list2集合中元素的个数
Long list4 = jedis.llen("list2");
System.out.println("list2集合中元素的个数: " + list4);
System.out.println("***********清空redis中的数据***********");
//清空redis中的数据
String s = jedis.flushDB();
System.out.println(s);
//关闭jedis
jedis.close();
}
运行结果:
***********向redis中添加List类型数据***********
从左边添加:4
list1集合中元素的个数:4
获取集合数据:[d, c, b, a]
list1集合从左边弹出一个元素:d
list1集合从右边弹出一个元素:a
list1集合中元素的个数:2
从右边添加:4
list2集合中元素的个数: 4
获取集合数据:[a, b, c, d]
list2集合从左边弹出一个元素: a
list2集合从右边弹出一个元素: d
list2集合中元素的个数: 2
***********清空redis中的数据***********
OK
3: 操作Set数据类型
/**
* java操作redis中的Set类型
*/
@Test
void test4() {
//创建jedis对象
Jedis jedis = new Jedis("127.0.0.1", 6379);
System.out.println("***********向redis中添加Set类型数据***********");
//向redis中添加Set集合数据
Long sAdd = jedis.sadd("set1", "a", "b", "c", "d", "d", "e", "f");
System.out.println("添加Set集合数据:" + sAdd);
//获取redis中的set1集合数据
Set<String> set1 = jedis.smembers("set1");
System.out.println("获取Set集合数据:" + set1);
//删除redis中set1集合中指定的数据
Long sRem = jedis.srem("set1", "a", "b");
System.out.println("删除Set集合数据:" + sRem);
Set<String> set2 = jedis.smembers("set1");
System.out.println("获取Set集合数据:" + set2);
//清空库表
jedis.flushDB();
System.out.println("***********获取Set集合中的交并差集***********");
Long sadd1 = jedis.sadd("set1", "a", "b", "c", "d", "e", "f");
System.out.println("添加set1集合数据:" + sadd1);
Long sadd2 = jedis.sadd("set2", "a", "b", "g", "h", "i");
System.out.println("添加set2集合数据:" + sadd2);
//获取交集
Set<String> sinter = jedis.sinter("set1", "set2");
System.out.println("交集:" + sinter);
//获取并集
Set<String> sunion = jedis.sunion("set1", "set2");
System.out.println("并集:" + sunion);
//获取差集
Set<String> sdiff = jedis.sdiff("set1", "set2");
System.out.println("差集:" + sdiff);
System.out.println("***********清空redis中的数据***********");
//清空redis中的数据
String s = jedis.flushDB();
System.out.println(s);
//关闭jedis
jedis.close();
}
运行结果:
***********向redis中添加Set类型数据***********
添加Set集合数据:6
获取Set集合数据:[f, a, b, c, d, e]
删除Set集合数据:2
获取Set集合数据:[f, c, d, e]
***********获取Set集合中的交并差集***********
添加set1集合数据:6
添加set2集合数据:5
交集:[b, a]
并集:[f, a, g, h, b, c, e, d, i]
差集:[d, e, f, c]
***********清空redis中的数据***********
OK
4: 操作Hash数据类型
/**
* java操作redis中的Hash类型
*/
@Test
void test5() {
//创建jedis对象
Jedis jedis = new Jedis("127.0.0.1", 6379);
System.out.println("***********向redis中添加hash类型数据***********");
//向redis中添加hash类型数据(添加一个数据)
Long hSet = jedis.hset("student1", "name", "李四");
System.out.println("添加一个数据: " + hSet);
//获取添加的一个数据
String name = jedis.hget("student1", "name");
System.out.println("获取指定的数据: " + name);
//向redis中添加hash类型数据(添加多个数据)
Map<String, String> map = new HashMap<>();
map.put("name", "张三");
map.put("sex", "男");
map.put("address", "上海");
String msg = jedis.hmset("student2", map);
System.out.println("添加多个数据: " + msg);
//获取多个数据
List<String> hmGet = jedis.hmget("student2", "name", "sex", "address");
System.out.println("获取多个数据: " + hmGet);
System.out.println("***********清空redis中的数据***********");
//清空redis中的数据
String s = jedis.flushDB();
System.out.println(s);
//关闭jedis
jedis.close();
}
运行结果:
***********向redis中添加hash类型数据***********
添加一个数据: 1
获取指定的数据: 李四
添加多个数据: OK
获取多个数据: [张三, 男, 上海]
***********清空redis中的数据***********
OK
5: 操作zset数据类型
/**
* java操作redis中的zset类型
*/
@Test
void test6() {
//创建jedis对象
Jedis jedis = new Jedis("127.0.0.1", 6379);
System.out.println("***********向redis中添加zset数据***********");
//向redis中添加zset数据
Long zAdd1 = jedis.zadd("city", 10d, "西安");
System.out.println("添加zset数据:" + zAdd1);
Long zAdd2 = jedis.zadd("city", 50d, "上海");
System.out.println("添加zset数据:" + zAdd2);
Long zAdd3 = jedis.zadd("city", 30d, "北京");
System.out.println("添加zset数据:" + zAdd3);
System.out.println("***********获取redis中zset数据***********");
System.out.println("获取redis中zset数据:");
//获取redis中zset数据
Set<String> city = jedis.zrange("city", 0, -1);
for (String c : city){
System.out.println(c);
}
System.out.println("***********清空redis中的数据***********");
//清空redis中的数据
String s = jedis.flushDB();
System.out.println(s);
//关闭jedis
jedis.close();
}
运行结果:
***********向redis中添加zset数据***********
添加zset数据:1
添加zset数据:1
添加zset数据:1
***********获取redis中zset数据***********
获取redis中zset数据:
西安
北京
上海
***********清空redis中的数据***********
OK
6: 操作HyperLogLog数据类型
/**
* java操作redis中的HyperLogLog(基数)类型
*/
@Test
void test7() {
//创建jedis对象
Jedis jedis = new Jedis("127.0.0.1", 6379);
Long pfadd1 = jedis.pfadd("hyperLogLog1", "a", "b", "c", "d", "e", "f", "a", "a", "b");
System.out.println("添加数据1:" + pfadd1);
Long pfadd2 = jedis.pfadd("hyperLogLog2", "a", "b", "c", "d");
System.out.println("添加数据2:" + pfadd2);
String pfmerge = jedis.pfmerge("hyperLogLog", "hyperLogLog1", "hyperLogLog2");
System.out.println("合并两个HyperLogLog:" + pfmerge);
long hyperLogLog = jedis.pfcount("hyperLogLog");
System.out.println("基数为:" + hyperLogLog);
System.out.println("***********清空redis中的数据***********");
//清空redis中的数据
String s = jedis.flushDB();
System.out.println(s);
//关闭jedis
jedis.close();
}
运行结果:
添加数据1:1
添加数据2:1
合并两个HyperLogLog:OK
基数为:6
***********清空redis中的数据***********
OK
7: 操作Geospatial数据类型
/**
* java操作redis中的Geospatial类型
*/
@Test
void test8() {
//创建jedis对象
Jedis jedis = new Jedis("127.0.0.1", 6379);
//添加北京坐标信息
Long beijing = jedis.geoadd("china:city", 116.46, 39.92, "beijing");
System.out.println("添加北京坐标信息:" + beijing);
//添加上海坐标信息
Long shanghai = jedis.geoadd("china:city", 121.48, 31.22, "shanghai");
System.out.println("添加上海坐标信息:" + shanghai);
//添加广州坐标信息
Long guangzhou = jedis.geoadd("china:city", 113.23, 23.16, "guangzhou");
System.out.println("添加广州坐标信息:" + guangzhou);
//添加深圳坐标信息
Long shenzhen = jedis.geoadd("china:city", 114.05, 22.55, "shenzhen");
System.out.println("添加深圳坐标信息:" + shenzhen);
//添加杭州坐标信息
Long hangzhou = jedis.geoadd("china:city", 120.19, 30.26, "hangzhou");
System.out.println("添加杭州坐标信息:" + hangzhou);
//添加西安坐标信息
Long xian = jedis.geoadd("china:city", 108.95, 34.27, "xian");
System.out.println("添加西安坐标信息:" + xian);
//获取北京的坐标信息
List<GeoCoordinate> geoCoordinate = jedis.geopos("china:city", "beijing");
System.out.println("获取北京的坐标信息:" + geoCoordinate);
//获取多个坐标信息
List<GeoCoordinate> geoCoordinates = jedis.geopos("china:city", "beijing", "shanghai");
System.out.println("获取多个坐标信息:" + geoCoordinates);
//获取北京到上海的直线距离
Double distance = jedis.geodist("china:city", "beijing", "shanghai", GeoUnit.KM);
System.out.println("获取北京到上海的直线距离(单位:KM):" + distance);
//获取距离指定点位距离的城市
List<GeoRadiusResponse> citys = jedis.georadiusByMember("china:city", "beijing", 1500, GeoUnit.KM);
System.out.println("获取距离指定点位距离的城市:");
for (GeoRadiusResponse city:citys) {
System.out.print(city.getMemberByString() + "\t");
}
System.out.println();
//获取指定经纬度多少距离以内的元素
List<GeoRadiusResponse> geo1 = jedis.georadius("china:city", 116.46, 39.92, 1200, GeoUnit.KM);
System.out.println("获取指定经纬度多少距离以内的元素: ");
for (GeoRadiusResponse city:geo1) {
System.out.print(city.getMemberByString() + "\t");
}
System.out.println();
System.out.println("***********清空redis中的数据***********");
//清空redis中的数据
String s = jedis.flushDB();
System.out.println(s);
//关闭jedis
jedis.close();
}
运行结果:
添加北京坐标信息:1
添加上海坐标信息:1
添加广州坐标信息:1
添加深圳坐标信息:1
添加杭州坐标信息:1
添加西安坐标信息:1
获取北京的坐标信息:[(116.45999997854233,39.919999041618105)]
获取多个坐标信息:[(116.45999997854233,39.919999041618105), (121.48000091314316,31.21999956478424)]
获取北京到上海的直线距离(单位:KM):1068.4581
获取距离指定点位距离的城市:
xian hangzhou shanghai beijing
获取指定经纬度多少距离以内的元素:
beijing hangzhou shanghai xian
***********清空redis中的数据***********
OK