Redis整合jedis 学习

news2024/12/20 2:14:48

前言

redis简单来讲是内存数据库,因为是将数据存放到内存,因此读写速率高快(传统数据库,不是先从内存转到硬存,慢)

1.jedis连接Redis

redis是java操作redis的客户端,通过他我们能通过java语句操控redis。

jedis对于redis,相对于jdbc对于mysql。(底层)

1.1 jedis连接redis


本笔记采用,md由于底层几乎没人用,因此导入springboot依赖,外加springboot整合redis依赖即可。
	  springboot1.0x 默认采用的连接池技术是jedis
	  2.0 以上版本连接池是Lettuce
<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis</artifactId>
			<exclusions>
				<exclusion>
					<groupId>io.lettuce</groupId>
					<artifactId>lettuce-core</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		
		<!--jedis依赖 -->
		<dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
		</dependency>
Jedis jedis = new Jedis("192.168.88.135",6379);
        // 设置认证密码
        jedis.auth("123456");
        // 选择数据库
        jedis.select(0);
        System.out.println(jedis.ping());
        // 设置string键值
        jedis.set("name","qhx");
        String name = jedis.get("name");
        if (jedis != null){
            jedis.close();
        }

看的出,穿件jedis对象之后,发现他默认封装的方法api就是redis的指令。

1.2 jedis连接池连接Redis

看的出跟mysql数据库连接池一样。

1.创建 数据库连接池对象,封装jedisconfig配置,以及数据库密码,端口号、redisIP

2.由数据库连接池对象创建数据库对象

PS:由jedisPool创建jedis对象,不能设置密码,ip之类的。

   // 初始化jedis连接池对象
        JedisPool jedisPool = new JedisPool(new JedisPoolConfig(), "192.168.88.135", 6379, 10000, "123456");
      // 从数据库连接器获取redis对象
        Jedis jedis = jedisPool.getResource();
        jedis.select(2);
        // 使用ping命令测试连接成功
        System.out.println(jedis.ping());
        jedis.set("name","qhx");
        jedis.get("name");
        if(jedis !=null){
            jedis.close();
            jedisPool.close();
        }

1.3 将Jedis对象交给spring管控

理解Mysql一样,就是将数据库连接池,你肯定要连接一次吧?创建多次数据库连接池,浪费资源。就是静态实例,你是由一个数据库连接池对象,能创建多个数据库连接对象。

那就是把他封装一个静态工厂之类的,但是这样写不太高级,那就将他讲给spring管控,也就是第三方bean。默认单例化对象。

将配置信息写在application.yml,方便以后集中管控

application.yml

spring:
  redis:
    password: 123456
    # 默认0库
    database: 0
    #连接超时时间
    timeout: 10000ms
    port: 6379
    host: 192.168.88.135
    jedis:
      pool:
        # 设置最大连接数
        max-active: 1024
        # 最大阻塞时间
        max-wait: 10000ms
        # 最大空间连接,默认8
        max-idle: 200
        # 最小空间连接,默认5
        min-idle: 4

Redis.config

遇到的问题:

 注意白色是字符串,蓝色的是number,读取时一定不要弄错了

@Configuration
public class RedisConfig {

    @Value("${spring.redis.jedis.pool.max-idle}")
    private int maxIdle;
    @Value("${spring.redis.jedis.pool.max-wait}")
    private String maxWaitMillis;
    @Value("${spring.redis.jedis.pool.min-idle}")
    private int minIdle;
    @Value("${spring.redis.jedis.pool.max-active}")
    private int maxTotal;
    @Value("${spring.redis.port}")
    private int port;
    @Value("${spring.redis.host}")
    private String host;
    @Value("${spring.redis.timeout}")
    private String timeout;
    @Value("${spring.redis.password}")
    private String password;
    @Value("${spring.redis.database}")
    private int database;


    @Bean /** 返回jedis连接池*/
    public JedisPool getJedisPool(){
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        // 设置最大连接数
        jedisPoolConfig.setMaxTotal(maxTotal);
        // 设置最大空间连接
        jedisPoolConfig.setMaxIdle(maxIdle);
        // 设置最小空间连接
        jedisPoolConfig.setMinIdle(minIdle);
       // 设置最大阻塞时间(注意是个10000ms字符串)
       jedisPoolConfig.setMaxWaitMillis(Long.parseLong(maxWaitMillis.substring(0,maxWaitMillis.length()-2)));
       // 创建数据库对象
        JedisPool jedisPool = new JedisPool(jedisPoolConfig,host, port,
                (int) Long.parseLong(timeout.substring(0,timeout.length()-2)),password,database);

        return jedisPool;
    }
}

1.4 jedis操作各种数据类型

     Jedis jedis = jedisPool.getResource();
       // 操作数据类型 -- java代码
       jedis.set("name","qhx");
     
       // -- redis指令
       set name qhx

其实,看上述操作jedis和原指令无吊区别。会redis操作指令就会这个。

hash封装map更简单

redis操作指令入门级别:https://blog.csdn.net/Qhx20040819/article/details/131219793

 

 事务处理

 操控byte数组

先说一下,一个java对象要正常实现序列化:

  1. 对象必须实现Serializable 接口,这是Java提供的标准的序列化接口。

  2. 使用 Java 序列化机制提供的 ObjectOutputStream 类将对象写入到输出流中。通过 ObjectOutputStreamwriteObject() 方法可以将一个对象序列化后,写入到输出流(如文件流、网络流等)中。

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

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

相关文章

Vue使用Echarts折线图,实现点击播放、暂停、选择播放倍数;实现数据直播功能

文章目录 &#x1f31f;前言&#x1f31f;先看效果&#x1f31f;整体代码&#xff08;详细注释&#xff09;&#x1f31f;写在最后 &#x1f31f;前言 哈喽小伙伴们&#xff0c;最近公司有个小需求&#xff0c;就是基于Echarts的折线图&#xff0c;做一个数据直播的功能&#…

manacher(图文详解)

文章目录 简要介绍实际应用算法详解 简要介绍 马拉车算法&#xff0c;Manacher‘s Algorithm 是用来查找一个字符串的最长回文子串的线性方法&#xff0c;是一个叫Manacher的人在1975年发明的&#xff0c;这个方法的最大贡献是在于将时间复杂度提升到了线性O(N)。 实际应用 刷…

玩转脚本实现自动化

目录 前言&#xff1a; 自动化原理 前置和后置脚本的区别&#xff08;它们的功能就如同名字一样&#xff09; 淘宝联盟接入文档 签名算法 调用示例 配置环境参数 设置全局变量 设置相关环境下的服务器地址 开始分析参数指定规则 添加接口 前言&#xff1a; 自动化测…

shell索引数组变量-定义获取拼接删除

目录 介绍数组的定义演示 数组的获取数组的拼接演示&#xff1a; 数组的删除 介绍 Shell 支持数组&#xff08;Array&#xff09;, 数组是若干数据的集合&#xff0c;其中的每一份数据都称为数组的元素。 &#xff08; 注意Bash Shell 只支持一维数组&#xff0c;不支持多维数组…

如何在ASP.NET Core应用中实现与第三方IoC/DI框架的整合?

我们知道整个ASP.NET Core建立在以ServiceCollection/ServiceProvider为核心的DI框架上&#xff0c;它甚至提供了扩展点使我们可以与第三方DI框架进行整合。对此比较了解的读者朋友应该很清楚&#xff0c;针对第三方DI框架的整合可以通过在定义Startup类型的ConfigureServices方…

大学毕业生自荐信范文

大学毕业生自荐信范文1 尊敬的贵公司领导&#xff1a; 您好&#xff01; 首先感谢您对我的关注&#xff0c;在我即将走出校门的时候&#xff0c;给我一次宝贵的工作机会。 学习了两年的会计专业相关知识后&#xff0c;已经使得我对会计行业有了深刻的认识。技能要靠经验&#x…

7.OpenCV-图像轮廓

1.通过OpenCV的findContours可以很方便的找到图片中内容的轮廓。 2.为了提取轮廓有更高的准确率&#xff0c;在提取轮廓前&#xff0c;需要对图片进行预处理&#xff08;二值阈值&#xff09;&#xff0c;只保留感兴趣的图像。 3.通过计算轮廓面积与外接矩形或外接圆的面积&a…

2023年6/16 操作系统小知识点

目录 分值第二章1. 进程状态转化的条件2. 进程控制块概念&#xff0c;作用&#xff0c;构成。3. 进程上下文概念&#xff0c;组成4. 进程的创建过程以及步骤5. 作业调度和低级调度算法&#xff0c;基本思想&#xff0c;7个&#xff0c;都要掌握6. 线程概念和处理过程7. 为什么有…

【玩转Docker小鲸鱼叭】虚拟化技术是什么?

到底什么是虚拟化&#xff1f; Docker 是一款基于容器虚拟化技术构建的软件&#xff0c;那到底什么虚拟化技术呢&#xff1f;在学习Docker之前&#xff0c;先简单了解下虚拟化技术。 虚拟化是云原生的实现基础&#xff0c;它能够帮助我们更加有效地利用物理计算机硬件。 虚拟…

德国Kipu Quantum与法国Pasqal合作优化量子算法

​ &#xff08;图片来源&#xff1a;网络&#xff09; 6月12日&#xff0c;德国量子软件公司Kipu Quantum宣布与法国中性原子量子计算领域的领导者PASQAL达成为期两年的研发协议&#xff0c;以优化量子算法功能&#xff0c;并为企业加速带来量子效益。 Kipu Quantum专注于为特…

Pytest教程__allure报告(11)

一、allure工具环境配置 windows安装allure 1、下载allure工具包 进入工具包官网&#xff1a;https://github.com/allure-framework/allure2/releases 2、解压下载包 3、将解压包的bin目录路径添加到环境变量中 4、打开cmd命令行输入 allure --version 确认是否安装成功 lin…

文件从 UNIX(LF) 批量改为 PC(CR+LF) ,编码格式保持源文件编码,CMD转换成功

如何把文件从 UNIX(LF) 批量改为 PC(CRLF) &#xff0c;编码格式保持源文件编码&#xff0c;通过电脑自带cmd 批量更改-1.0 chcp 65001 && FOR /F "tokens*" %f IN (dir /b D:\opt\output\DATA_FILE\20230531\*.DAT) DO type "D:\opt\output\DATA_FILE…

经典的设计模式21——策略模式

文章目录 策略模式 猛的发现策略模式和状态模式的结构图长得到好像&#xff0c;可得好好区分区分。 不过真的好像&#xff0c;就是方法那里传递的参数不一样。 百度来一波。 策略模式 定义&#xff1a; 定义了算法家族&#xff0c;分别封装起来&#xff0c;让他们之间可以互…

数字电路基础---锁存器

目录 锁存器 1、简介 2、实验任务 3、程序设计 3.1、缺少 else 分支的锁存器代码 3.2、补齐 else 分支 3.3、缺少 default 的 case 语句的锁存器代码 3.3、补齐 default 的 case 语句 4、本章总结 锁存器 锁存器&#xff08;俗称 Latch&#xff09;是数字电路中的一种…

别让存储成为ChatGPT大模型训练的关键瓶颈

当下科技行业be like... 据说现在的科技公司&#xff0c;不是在抢GPU&#xff0c;就是在往抢GPU的路上……此前4月&#xff0c;特斯拉CEO马斯克就购买了1万块GPU&#xff0c;他还称公司将继续大量购买英伟达的GPU。 在国内&#xff0c;近日也有报道称&#xff0c;字节跳动今年…

MySQL数据库事务和存储引擎(贼详细)

目录 一、MySQL 事物 1、事务的概念 2、 事务的ACID特点 &#xff08;1&#xff09;原子性 &#xff08;2&#xff09;一致性 &#xff08;3&#xff09; 隔离性 &#xff08;4&#xff09;事务之间的相互影响 &#xff08;5&#xff09; Mysql及事物隔离级别 &#…

你知道视频配音怎么配出好听的声音吗

小明&#xff1a;最近我在制作一个视频项目&#xff0c;但是我发现视频中的原声不够理想&#xff0c;我想给它配上好听的声音。你知道怎么配音才能让声音听起来更好吗&#xff1f; 小李&#xff1a;当然&#xff01;配音是提升视频质量的重要一环。想知道视频配音怎么配出好听…

uniapp实现应用wgt资源热更新

APP更新一般有两种形式 1、整包更新&#xff0c;通过hbuliderx提供的在线云打包就属于整包更新&#xff0c;属于全量更新&#xff0c;缺点就是打包时间长、要重新走市场审核。费时 2、wgt资源包热更新&#xff0c;通过hbuliderx打wgt包 &#xff0c;速度快&#xff0c;能在应用…

iphone测试中除了appium,还有更好用的工具吗

除了Appium&#xff0c;还有一些其他的工具可以用于iPhone测试&#xff0c;下面列举几个&#xff1a; 1. XCUITest XCUITest是苹果官方提供的UI自动化测试框架&#xff0c;可以用于iPhone和iPad应用程序的自动化测试。XCUITest可以模拟用户操作&#xff0c;例如点击、滑动、输…

机器学习实践(1.1)XGBoost分类任务

前言 XGBoost属于Boosting集成学习模型&#xff0c;由华盛顿大学陈天齐博士提出&#xff0c;因在机器学习挑战赛中大放异彩而被业界所熟知。相比越来越流行的深度神经网络&#xff0c;XGBoost能更好的处理表格数据&#xff0c;并具有更强的可解释性&#xff0c;还具有易于调参…