Java操作Redis的String,List,Set,Hash,zset,HyperLogLog,Geospatial数据类型

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值