Redis框架(一):Redis入门和Jedis连接池

news2025/1/12 22:45:42

Redis入门和Jedis连接池:

  • 基本介绍
  • 实例Demo
  • 源码分析

SpringCloud章节复习已经过去,新的章节Redis开始了,这个章节中将会回顾Redis
主要依照以下几个原则

  1. 基础+实战的Demo和Coding上传到我的代码仓库
  2. 在原有基础上加入一些设计模式,stream+lamdba等新的糖
  3. 通过DeBug调试,进入组件源码去分析底层运行的规则和设计模式

代码会同步在我的gitee中去,觉得不错的同学记得一键三连求关注,感谢:
链接: RedisJedisDemo

可以进入去看,觉得不错的博主记得一键三连支持下

基本介绍

  • 1、什么是 Redis?

Redis 是一个使用 C 语言写成的,开源的高性能key-value非关系缓存数据库。

它支持存储的value 类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和 hash(哈希类型)。

Redis的数据都基于缓存的,所以很快,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。Redis也可以实现数据写入磁盘中,保证了数据的安全不丢 失,而且Redis的操作是原子性的。

    1. jedis

jedis就是基于java语言的redis客户端,集成了redis的命令操作,提供了连接池管理。
redis-cli是redis官方提供的客户端,可以看作一个shell程序,它可以发送命令对redis进行操作。
对于jedis同理是使用java语言操作redis,双方都遵循redis提供的协议,按照协议开发对应的客户端。

实例Demo

这里第一要注意在cmd中开启redis
我在环境变量里配置了redis-server, 可以直接通过redis-server.exe开启
在这里插入图片描述
然后进行连接,通过ping命令去检测开启
在这里插入图片描述
可以使用redismanager进行可视化管理
在这里插入图片描述

  1. 配置Maven依赖
    <dependencies>
<!--jedis-->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.7.0</version>
        </dependency>
<!--测试-->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>5.7.0</version>
            <scope>test</scope>
        </dependency>
<!--log日志-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.21</version>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/log4j/log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

    </dependencies>

  1. 配置jedis连接池,类似于线程池,可以帮助创建和销毁新的连接
public class JedisConnectFactory {

    public static Jedis getJedis(){
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxTotal(8);
        jedisPoolConfig.setMaxIdle(8);
        jedisPoolConfig.setMinIdle(0);
        JedisPool pool = new JedisPool(jedisPoolConfig, "127.0.0.1", 6379, 1000);
        return pool.getResource();
    }
}

在这里插入图片描述

  1. 这里@BeforeEach等注解是test注解,类似于一个aop,做了前后插入
public class TestRedisDemo {

    private Jedis jedis;

    @BeforeEach
    void SetUp(){
//        jedis = new Jedis("127.0.0.1", 6379);
        jedis = JedisConnectFactory.getJedis();
//        jedis.auth("")

        this.jedis.select(0);

    }
        @AfterEach
    void  testDown(){
        if (jedis != null) {

            jedis.close();
        }
    }

}

下面是实际操作,jedis和redis的cmd中的操作一样

    @Test
    void  testHash(){
        Long result = jedis.hset("user2","name", "虎哥1");
        Long result1 = jedis.hset("user2","age", "22");
        System.out.println(result);
        System.out.println(result1);
        Map<String, String> user1 = jedis.hgetAll("user2");
        System.out.println(user1);

    }

    @Test
    void  testString(){
        String result = jedis.set("name", "虎哥1");
        System.out.println(result);
        String name = jedis.get("name");
        System.out.println(name);

    }


源码分析

简单debug了,没啥好说的

    @Test
    void  testString(){
        String result = jedis.set("name", "虎哥1");
        System.out.println(result);
        String name = jedis.get("name");
        System.out.println(name);

    }
  @Override
  public String set(final String key, final String value) {
    checkIsInMultiOrPipeline();
    client.set(key, value);
    return client.getStatusCodeReply();
  }

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/76064.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c#扩展方法

1、前言: 通常,我们想要向一个类型中添加方法,可以通过以下两种方式: 修改源代码。 在派生类中定义新的方法。 但是以上方法并不是万能的,我们并不能保证拥有一个类型的源码,也并不能保证这个类型可以让我们继承(如结构,枚举,String等等)。但是C#提供了一个办法,…

教你如何写一个符合自己需求的小程序日历组件

1|0 前言 很多时候&#xff0c;我们生活中会有各种打卡的情况&#xff0c;比如 keep 的运动打卡、单词的学习打卡和各种签到打卡或者酒店的入住时间选择&#xff0c;这时候就需要我们书写一个日历组件来处理我们这种需求。 但是更多时候&#xff0c;我们都是网上找一个插件直…

【HBase】【一】windows搭建源码开发环境

目录环境配置1. Windows安装Cygwin2. 安装ProtocolBuffers3. 启动zookeeper4. 搭建Hadoop环境5. 编译Hbase源码6. 启动HRegionServer7. 启动HMaster8. 启动HShell客户端环境配置 系统&#xff1a;windows10 IDE: Eclipse hadoop: 3.3.4 hbase: 2.4.15 java: 17 1. Window…

pytest学习——pytest插件的7种用法

1.pytest-repeat 重复跑 安装包 pip install pytest-repeat第一种用法&#xff1a; 装饰器 pytest.mark.repeat(次数) 示例代码 import pytest pytest.mark.repeat(5) def test_001(): assert 12 if __name__ __main__: pytest.main([-sv,__file__])第二种用法&#xff1a…

[附源码]Python计算机毕业设计SSM基于数据挖掘的毕业生离校信息系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 Ma…

基于牛顿方法在直流微电网潮流研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f389;作者研究&#xff1a;&#x1f3c5;&#x1f3c5;&#x1f3c5;本科计算机专业&#xff0c;研究生电气学硕…

拆解理想汽车Q3财报:收入增速继续下滑,年内两次更换首席技术官

12月9日&#xff0c;理想汽车&#xff08;NASDAQ:LI、HK:02015&#xff09;发布截至2022年9月30日止季度&#xff08;即2022年第三季度&#xff09;的未经审计财务业绩。财报显示&#xff0c;理想汽车2022年第三季度的收入为93.42亿元&#xff0c;同比增加20.2%&#xff0c;低于…

(九)Vue之侦听/监听/监视属性

文章目录普通实现监视属性实现Vue里配置监视属性Vue外配置监视属性配置属性immediate配置deep&#xff08;深度监视&#xff09;配置普通监视监视多级结构中某个属性的变化监视多级结构中所有属性的变化监视属性简写watch配置简写$watch配置简写监视属性vs计算属性Vue学习目录上…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java农产品推广平台98966

对于计算机专业的学生最头疼的就是临近毕业时的毕业设计,对于如何选题,技术选型等这些问题,难道了大部分人,确实,还没毕业的学生对于这些问题还比较陌生,只有学习的理论知识,没有实战经验怎么能独自完成毕业设计这一系列的流程,今天我们就聊聊如何快速应对这一难题. 比较容易的…

ITK 形态学中的开运算和闭运算 腐蚀 膨胀

一. 图像形态学处理 —— 膨胀和腐蚀 腐蚀在二值图像的基础上做“收缩”或“细化”操作; 膨胀在二值图像的基础上做“加长”或“变粗”的操作。 什么是二值图像呢&#xff1f;把一幅图片看做成一个二维的数组&#xff0c;那么二值图像是一个只有0和1的逻辑数组&#xff0c;我们…

vertical-align属性

vertical-align属性 CSS的vertical-align属性使用场景&#xff0c;经常用于设置图片或者表单(行内块元素)和文字垂直对齐 用于设置一个元素的垂直对齐方式&#xff0c;但是它只针对于行内元素或者行内块元素有效 源代码 语法&#xff1a; vertical-align { baseline | top | …

序——在linux下学习C语言

目录 在Linux下学习C语言的前提。。。 一、Linux的一些常见命令 二、Linux中VI和VIM的一些命令操作 1、在VIM中控制光标 2、vim中的插入模式 3、退出插入模式的方法 4、在VIM模式中的删除命令 5、撤销命令 6、 粘贴和拷贝命令 7、查看文件信息和寻找另一半括号 8、缩…

十万部冷知识:日本国歌为什么像哀乐?

大家在世界杯上看日本队比赛的时候&#xff0c;有没有感觉他们的国歌跟哀乐似的&#xff0c;听着就跟在办葬礼一样。其实&#xff0c;这还真不是像与不像的问题&#xff0c;而是因为它确实是一首挽歌。 这首歌叫《君之代》&#xff0c;出自于《古今和歌集》&#xff0c;是在天皇…

关于Servlet编程(1)

1.Servlet编程中常见网页错误 404错误 : 访问不存在 一般都是路径出错. 405错误 : 请求方法不允许 使用访问的方法有误 只书写了接受Get方法的代码.却使用POST方法访问. 代码中忘记注释super()方法也会返回405 因为源码是直接返回405的 这里展示的两段代码都会引发上图的40…

[附源码]计算机毕业设计健康医疗体检Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

powershell实现发送win10系统通知

powershell实现发送win10系统通知 一、实现方式是使用系统自带的类NotifyIcon 关于Notify类的属性和使用方法可以查阅NotifyIcon官方文档&#xff0c;这主要讲一下用到的几个变量和方法。 1. Icon Icon只支持 .ico格式的图标&#xff0c;属于自定义图标&#xff0c;只有当 Ba…

PLC、运动控制卡、运动控制器,傻傻分不清

前言 最近有不少做PLC开发的小伙伴&#xff0c;在一些咨询运动控制卡、运动控制器相关的问题&#xff0c;很多人不清楚它们之间有什么区别和联系&#xff0c;今天跟大家就PLC、运动控制卡、运动控制器区别及选型做个分享。 背景 随着工业技术的发展&#xff0c;工业机器人应…

怎么调整视频画布?这些技巧你知道吗?

小伙伴们平时在制作视频时是否有遇到过这种情况&#xff1a;从网站下载的视频素材画面过大&#xff0c;两边还带有黑边&#xff0c;插入到自己的视频后&#xff0c;显得视频整体上很突兀&#xff0c;美观度也受到影响&#xff0c;没有达到自己预期的效果。 如果你们也有这样的烦…

什么是CodeArts?

什么是CodeArts 软件开发生产线&#xff08;CodeArts&#xff09;原名“软件开发平台&#xff08;DevCloud&#xff09;”是集华为近30年研发实践、前沿研发理念、先进研发工具为一体的一站式云端DevOps平台&#xff0c;面向开发者提供的云服务&#xff0c;即开即用&#xff0…

从开环到闭环的旅程-CoCube

差动驱动机器人轨迹-CoCube 迷宫逃离的问题-CoCube 自由运动和环境限制-CoCube 001&#xff0c;自由运动 002&#xff0c;引出环境 003&#xff0c;对比差异 ROS机器人从起点到终点&#xff08;四&#xff09;蓝桥云实践复现 cocube自由运动机器人也需要一个目标&#xff…