• 03【Jedis连接Redis服务器】


    三、Jedis连接Redis服务器

    3.1 Jedis简介

    Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如java、C、C#、C++、php、Node.js、Go等。在官方网站里列一些Java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis、等其中官方推荐使用Jedis和Redisson。 在企业中用的最多的就是Jedis。Jedis提供了完整Redis命令,而Redisson有更多分布式的容器实现。

    在这里插入图片描述

    3.2 Jedis的使用

    3.2.1 引入Maven依赖

    <!--连接驱动-->
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>2.9.0</version>
    </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.2.2 Jedis连接redis服务端:

    @Test
    public void test1() {
    
        // 创建一个Redis连接
        Jedis jedis = new Jedis("localhost");
    
        System.out.println("连接redis服务端成功!");
    
        //测试redis服务器是否正在运行
        System.out.println("redis服务器正在运行吗?" + jedis.ping());
        
        // 获取redis服务的配置信息
        System.out.println("redis服务器信息?\n" + jedis.info());
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    注意:

    1.防火墙需要放行6379默认端口

    2.使用jedis连接redis可能会出现的问题及解决方案

    3.2.3 Jedis操作String数据类型

    @Test
    public void test2() {           // String 操作
        // 创建一个Redis连接
        Jedis jedis = new Jedis("localhost");
    
        String result = jedis.set("name", "hangman");
    
        System.out.println(result);
    
        String name = jedis.get("name");
        System.out.println(name);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    3.2.3 Jedis操作Hash数据类型

    @Test
    public void test3() {           // Hash操作
        // 创建一个Redis连接
        Jedis jedis = new Jedis("localhost");
    
        jedis.hset("user","username","root");
        jedis.hset("user","password","admin");
    
        String username = jedis.hget("user", "username");
        String password = jedis.hget("user", "username");
    
        System.out.println(username);
        System.out.println(password);
    
        // 释放资源
        jedis.close();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    3.2.4 Jedis操作List数据类型

    @Test
    public void test4() {           // List操作
        // 创建一个Redis连接
        Jedis jedis = new Jedis("localhost");
    
        Long result = jedis.lpush("fruits", "apple", "pear", "banana", "tomato");
        System.out.println(result);
    
        List<String> fruits = jedis.lrange("fruits", 0, -1);
        System.out.println(fruits);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    3.2.5 Set测试

    • set基本操作
    @Test
    public void test5() {           // Set操作
        // 创建一个Redis连接
        Jedis jedis = new Jedis("localhost");
    
        Long result = jedis.sadd("cities", "lanzhou", "fuzhou", "guangzhou", "hangzhou", "zhengzhou");
    
        System.out.println(result);
    
        Set<String> cities = jedis.smembers("cities");
        System.out.println(cities);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 取交集、差集、并集:
    @Test
    public void test6() {           // Set操作求交集、差集、并集
        // 创建一个Redis连接
        Jedis jedis = new Jedis("localhost");
    
        jedis.sadd("cities1", "lanzhou", "fuzhou", "guangzhou", "hangzhou", "zhengzhou");
        jedis.sadd("cities2", "meizhou", "guangzhou", "quanzhou", "fuzhou", "ganzhou");
    
        // [guangzhou, fuzhou]
        Set<String> sinter = jedis.sinter("cities1", "cities2");
        System.out.println(sinter);
    
        // [zhengzhou, hangzhou, lanzhou]
        Set<String> sdiff = jedis.sdiff("cities1", "cities2");
        System.out.println(sdiff);
    
        // [fuzhou, guangzhou, hangzhou, lanzhou, meizhou, ganzhou, quanzhou, zhengzhou]
        Set<String> sunion = jedis.sunion("cities1", "cities2");
        System.out.println(sunion);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    3.2.6 Zset测试

    @Test
    public void test7() {           // zset操作
        // 创建一个Redis连接
        Jedis jedis = new Jedis("localhost");
    
        jedis.zadd("students",100,"xiaohui");
        jedis.zadd("students",80,"xiaolan");
        jedis.zadd("students",99,"xiaojun");
    
        // 获取所有的key
        Set<String> students = jedis.zrange("students", 0, -1);
        System.out.println(students);
    
        System.out.println();
        Set<Tuple> studentsTuple = jedis.zrangeWithScores("students", 0, -1);
    
        for (Tuple tuple : studentsTuple) {
            System.out.println("key: "+tuple.getElement());
            System.out.println("score: "+tuple.getScore());
        }
    
        // 释放资源
        jedis.close();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    3.3 Jedis 连接池

    package com.dfbz.demo01;
    
    import org.junit.Test;
    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.JedisPool;
    import redis.clients.jedis.JedisPoolConfig;
    
    /**
     * @author lscl
     * @version 1.0
     * @intro:
     */
    public class Demo02_Pool {
    
    
        @Test
        public void test1() {
            // 创建Jedis连接池配置对象
            JedisPoolConfig config = new JedisPoolConfig();
    
            // 最大连接数
            config.setMaxTotal(30);
            // 最大空闲连接数
            config.setMaxIdle(10);
            // 最小空闲连接数
            config.setMinIdle(5);
            // 最长等待毫秒数
            config.setMaxWaitMillis(3000);
    
            // 创建一个Jedis连接池
            JedisPool jedisPool = new JedisPool(config, "127.0.0.1", 6379);
    
            for (int i = 1; i <=31; i++) {
                Jedis jedis = jedisPool.getResource();
                if (i == 20) {
                    jedis.close();          // 将连接归还到连接池
                }
                System.out.println(jedis);
            }
    
            jedisPool.close();          // 释放资源
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
  • 相关阅读:
    显示控件——图标类之图标变量
    ACM-ICPC Northeastern European Regional Contest (NEERC 15) -Generators
    java计算机毕业设计ssm基金分析系统的设计与实现
    关于电影的HTML网页设计—— 电影小黄人6页 HTML+CSS+JavaScript
    协程(四)——Android中使用协程
    探索JDK8新特性,Stream 流:构建流的多种方式
    使用扩展卡尔曼滤波器进行包裹测量的状态估计
    词向量的运算与Emoji生成器
    顺丰小哥派件装载问题——典型的01背包问题
    实例分割Yolact边缘端部署 (四) 利用预训练模型快速标注
  • 原文地址:https://blog.csdn.net/Bb15070047748/article/details/125433748