Redis入门到精通(九),Jedis操作Redis

        上一期我们讲了Redis的几种常见客户端,今天呢我会跟大家聊一下如何通过Jedis将Redis应用到我们的JAVA项目中(SpringBoot对Redis有专门的封装,封装了Jedis和Lettuce,关于SpringBoot项目中如何更加简单的使用Redis我会在讲完三个客户端之后专门进行介绍,有兴趣的话可以点击专栏查看)。

        源码地址:https://gitee.com/victory336/Redis-Jedis.git

        省流小助手:项目中Redis如果用得少,可以使用第一种方式;如果用的多建议使用方式二的进阶版

一.方式一:

1.导包

        这里如果是Maven项目可以直接去Maven仓库下,也可以将之前我们下好的Jedis打成Jar包直接引入

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>

2.代码

    /**
    *  方式一:最朴素的操作方式
    *  1.创建连接
    *  2.操作redis
    *  3.释放链接
    **/
    @Test
    public void testJedis(){
        //1.先创建一个连接
        Jedis jedisConnection = new Jedis("127.0.0.1",6379,3000);
        //2.然后操作redis
        jedisConnection.set("user", "victory");
        String user = jedisConnection.get("user");
        //3.操作完成后关闭连接
        if(jedisConnection != null){
            jedisConnection.close();
        } 
    }

3.测试

        这里我们运行测试就可以看到输出的user对象为string类型的 "victory" ,再去我们的指令行里看

         就可以看到,多了一个叫"user"的key,值为"victory"到这里说明我们操作成功了。

         可是我们每次操作Redis时都需要创建连接,用完之后再释放连接。这样频繁创建销毁连接的性能开销是很大的,那么我们能不能参考JDBC的连接池呢。

二.方式二:

1.导包

        同方式一

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>

2.代码

    /**
    *  方式二:连接池进阶版(未抽取连接池工具)
    *  1.创建连接池配置对象
    *  2.配置连接池参数,拿到连接池配置对象
    *  3.通过连接池配置对象将参数传入,拿到连接池
    *  4.通过连接池拿到连接
    *  5.操作Redis
    *  6.释放链接
    *  7.摧毁连接池(连接池生命周期一般与我们项目一样,即项目启东市创建连接池,项目结束时摧毁连接池)
    **/
    @Test
    public void testJedisPool(){
        //1.创建连接池配置对象
        JedisPoolConfig config = new JedisPoolConfig();
        //2.配置连接池参数
        //2.1忙时最大连接(最大连接数)
        config.setMaxTotal(8);//连接池的最大连接数。使用负数表示无极限。
        //2.2闲时最大连接(最小连接数)
        config.setMaxIdle(2);//连接池的最大空闲连接数。如果值很小的话会频繁的创建销毁连接导致性能开销增加。
        //2.*闲时最小连接数
        config.setMinIdle(0);//连接池的最小空闲连接数。确保池满足要求在空闲对象回收运行期间的最小实例数。minIdle配置值大于配置值对于maxIdle,则将使用maxIdle的值。
        //2.3超时时间
        config.setMaxWaitMillis(3000);
        //2.4获取连接池检查时机
        config.setTestOnBorrow(true);
        //3.通过连接池配置对象,设置参数
        JedisPool jedisPool = new JedisPool(config, "127.0.0.1", 6379, 3000);
        //4.通过连接池获取连接
        Jedis jedisConnection = jedisPool.getResource();
        //5.执行操作
        jedisConnection.set("user", "victory");
        //6.释放连接
        jedisConnection.close();
        //7.摧毁连接池
        jedisPool.destroy();
    }

 3.测试

        到此,池化算是暂时完成了,但是好像看起来我们写的代码更多了呢

        此时可以抽取一个连接池工具类,用的时候再去池里拿,用完再还回去。这样如果我们频繁操作Redis时可以明显少些很多重复代码,最重要的是减少不少性能开销。

三.方式二进阶版:

1.导包

        同方式一

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>

2.工具类准备

        抽取一个JedisPoolUtils工具类

package cn.victory;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * @Description jedisUtils演示Demo
 * @Author victory
 * @Date 2022/5/25
 **/
public enum JedisPoolUtils {
    
    
    INSTANCE;

    private static JedisPool jedisPool = null;

    static {
        //1.创建连接池配置对象
        JedisPoolConfig config = new JedisPoolConfig();
        //2.配置连接池参数
        //2.1忙时最大连接(最大连接数)
        config.setMaxTotal(8);//连接池的最大连接数。使用负数表示无极限。
        //2.2闲时最大连接(最小连接数)
        config.setMaxIdle(2);//连接池的最大空闲连接数。如果值很小的话会频繁的创建销毁连接导致性能开销增加。
        //2.*闲时最小连接数
        config.setMinIdle(0);//连接池的最小空闲连接数。确保池满足要求在空闲对象回收运行期间的最小实例数。minIdle配置值大于配置值对于maxIdle,则将使用maxIdle的值。
        //2.3超时时间
        config.setMaxWaitMillis(3000);
        //2.4获取连接池检查时机
        config.setTestOnBorrow(true);
        //3.通过连接池配置对象,设置参数
        jedisPool = new JedisPool(config, "127.0.0.1", 6379, 3000);
    }



    /**
    *  获取连接
    **/
    public Jedis getConnection(){
        if (jedisPool != null) {
            return jedisPool.getResource();
        }else {
            return null;
        }
    }



    /**
    *  关闭连接
    **/
    public static void close(Jedis jedisConnection){
        if(jedisConnection!=null){
            jedisConnection.close();
        }
    }
}

        这里的INSTANCE我简单随口一说,如果已经知道的朋友就当复习一下。因为连接池这个东西它的生命周期一般是我们项目启动到项目结束且全程只需要一个,所以在项目启动的时候我们把它放在方法区(也叫静态区)中,来保证他的唯一,而且可以跨栈使用。

        然后就是工具类,当然工具类里可以写其他各种各样的方法,这里只做抛砖引玉和快速落实到项目中的作用,所以只写了获取连接的方法。后边空了再回来补充。

3.代码

    /**
    *  1.通过连接池拿到连接
    *  2.操作Redis
    *  3.释放连接
    **/
    @Test
    public void testJedisPoolUtils(){
        //实例化拿到连接
        Jedis jedisConnection= JedisPoolUtils.INSTANCE.getConnection();
        //操作Redis
        jedisConnection.set("user", "victory");
        //关闭连接
        jedisConnection.close();
    }

4.测试 

        今天就先到这里吧,下面几期会分别介绍剩下的两种之前提到过的框架,还有遥遥无期的集群和相关的高频知识点。祝各位儿童节快乐,永远年轻,三十五岁也不焦虑。还望各位看官点个赞再走吧,给您劈个叉~

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Redis 是一个开源的内存数据库,以其高性能和灵活的数据结构而闻名。《Redis 入门精通》是一本介绍 Redis 使用和深入学习的书籍,适合有一定编程基础的开发者或对数据库有一定了解的人士。 这本书从介绍 Redis 的概述和安装入手,帮助读者了解 Redis 的基本概念和使用方法。接着,书中详细介绍了 Redis 中常用的数据结构,如字符串、列表、哈希、集合和有序集合,并提供了示例代码和运用场景,让读者能够深入理解这些数据结构的使用和特点。 此外,书中还介绍了 Redis 的高级特性和应用,如发布-订阅模式、事务、持久化、复制等。这些内容帮助读者进一步了解 Redis 的技术原理和性能优势,帮助开发者更好地应用 Redis 解决实际问题。 《Redis 入门精通》还包括了性能优化、监控和故障处理等实用的内容,读者可以学习如何配置和优化 Redis 以提升系统性能,并学习如何排查和解决常见故障。 总体而言,《Redis 入门精通》是一本全面介绍和学习 Redis 的实用书籍,通过深入浅出的讲解和实例,帮助读者从入门精通 Redis,并能够灵活运用 Redis 解决实际问题。无论是想要了解 Redis 的基础知识还是深入学习 Redis 的高级特性,都可以从这本书中获得帮助和指导。 ### 回答2: Redis(Remote Dictionary Server)是一个开源的、基于键值对的存储系统。它以其高性能、易使用和丰富的功能而备受推崇。《Redis入门精通》PDF是一本针对Redis的学习资料,从入门到深入掌握Redis的各个方面进行了详细介绍。 这本书首先介绍了Redis的基本概念和原理,包括键值对存储、数据类型、持久化等核心概念。然后,它深入讲解了Redis的各种高级功能,如发布订阅、事务、Lua脚本等。此外,书中还包含了丰富的示例代码和实际应用场景,帮助读者更好地理解和应用Redis。 《Redis入门精通》PDF适合各个层次的读者。对于初学者,它提供了系统全面的入门指导,从安装配置开始,一步步引导读者熟悉和掌握Redis的使用。对于有一定经验的开发者,它提供了高级特性和实战案例,让读者深入了解Redis的内部机制和最佳实践。 此外,这本书还介绍了Redis的性能调优和集群部署等内容,帮助读者在实际应用中充分发挥Redis的潜力。无论是Web应用的缓存、消息队列还是实时数据分析,Redis都应该是开发者的首选。 总之,《Redis入门精通》PDF是一本权威而实用的Redis学习资料,通过系统而全面的介绍,帮助读者从入门精通Redis,更好地应用Redis解决实际问题。无论是初学者还是有经验的开发者,都可以从中获益匪浅。 ### 回答3: 《Redis 入门精通》是一本介绍 Redis 数据库的权威指南。Redis 是一种高性能、可扩展的键值存储系统,常用于缓存、消息队列、实时统计和分布式会话管理等领域。 该书从 Redis 的基础概念入手,包括安装配置、数据结构、持久化、集群部署等内容,帮助读者快速上手 Redis。接着介绍了 Redis 的高级功能,例如发布订阅、事务、Lua 脚本编写、并发控制等,让读者深入了解 Redis 的各种用法和技巧。 《Redis 入门精通》还涵盖了 Redis 在实际应用中的最佳实践,包括如何优化性能、如何设计和实现分布式系统等。此外,书中还介绍了常见的 Redis 开源工具和框架,如 Redisson、Spring Data Redis 等,帮助读者更好地利用 Redis 构建高效的应用程序。 该书内容丰富、结构清晰,适合初学者和有一定经验的开发人员。无论是想快速上手 Redis,还是想深入学习 Redis 的高级用法,本书都能提供详细的指导和实例演示。 总之,通过阅读《Redis 入门精通》这本书,读者可以系统地学习和掌握 Redis 数据库的各个方面,从入门精通。无论是作为开发人员、DBA 还是系统架构师,都能在实际工作中充分发挥 Redis 强大的功能和性能优势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值