当前位置: 首页 > news >正文

简单认识redis-5 jdbc 与 jedis 使用的区别

  1. 概念与功能定位

    • JDBC (Java Database Connectivity)
      • JDBC 是 Java 语言用于连接数据库(如 MySQL、Oracle 等关系型数据库)的标准 API。它提供了一套统一的接口,让 Java 程序能够与各种数据库进行交互,执行 SQL 语句(如查询、插入、更新、删除等操作)来操作关系型数据。
      • 例如,使用 JDBC 可以连接到 MySQL 数据库,执行SELECT * FROM users这样的查询语句,获取用户表中的数据,或者执行INSERT INTO users (name, age) VALUES ('John', 25)这样的插入语句来添加新用户数据。
    • Jedis
      • Jedis 是 Redis 数据库的 Java 客户端。Redis 是一个基于内存的键值对存储系统,支持多种数据结构(如字符串、哈希、列表、集合、有序集合等)。Jedis 允许 Java 程序方便地与 Redis 进行交互,执行 Redis 特有的操作指令。
      • 例如,可以使用 Jedis 在 Redis 中设置键值对jedis.set("key", "value"),或者从 Redis 中获取某个键的值jedis.get("key"),还可以操作其他 Redis 数据结构,如向列表中添加元素jedis.lpush("mylist", "element1", "element2")
  2. 连接建立方式

    • JDBC
      • 连接建立相对复杂,需要加载数据库驱动(不同的数据库有不同的驱动,如 MySQL 的驱动),然后通过DriverManager获取数据库连接。例如,连接 MySQL 数据库的基本代码如下:
       import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class JdbcExample {public static void main(String[] args) {String url = "jdbc:mysql://localhost:3306/mydb";String username = "root";String password = "password";try {Connection connection = DriverManager.getConnection(url, username, password);// 连接建立成功后可以进行后续操作connection.close();} catch (SQLException e) {e.printStackTrace();}}}
  • Jedis
    • 连接建立较为简单,只需要指定 Redis 服务器的地址和端口(默认 6379)即可创建 Jedis 实例连接到 Redis。例如:
       import redis.clients.jedis.Jedis;public class JedisExample {public static void main(String[] args) {Jedis jedis = new Jedis("localhost", 6379);// 连接建立成功后可以进行后续操作jedis.close();}}
  1. 数据操作方式

    • JDBC
      • 操作数据主要通过 SQL 语句。需要创建StatementPreparedStatement对象来执行 SQL 操作。例如,查询用户表中年龄大于 20 岁的用户:
       import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class JdbcQueryExample {public static void main(String[] args) {String url = "jdbc:mysql://localhost:3306/mydb";String username = "root";String password = "password";try {Connection connection = DriverManager.getConnection(url, username, password);String sql = "SELECT * FROM users WHERE age >?";PreparedStatement statement = connection.prepareStatement(sql);statement.setInt(1, 20);ResultSet resultSet = statement.executeQuery();while (resultSet.next()) {// 处理查询结果}statement.close();connection.close();} catch (SQLException e) {e.printStackTrace();}}}
  • Jedis
    • 操作基于 Redis 特有的命令和数据结构。例如,对 Redis 中的哈希数据结构进行操作:
       import redis.clients.jedis.Jedis;public class JedisHashExample {public static void main(String[] args) {Jedis jedis = new Jedis("localhost", 6379);jedis.hset("user:1", "name", "John");jedis.hset("user:1", "age", "25");String name = jedis.hget("user:1", "name");System.out.println("Name: " + name);jedis.close();}}
  1. 事务处理

    • JDBC
      • 有完善的事务处理机制,支持 ACID(原子性、一致性、隔离性、持久性)特性。通过Connection对象的setAutoCommit(false)等方法来控制事务的开始、提交和回滚。例如:
       try {connection.setAutoCommit(false);// 执行多个SQL操作statement1.executeUpdate();statement2.executeUpdate();connection.commit();} catch (SQLException e) {try {connection.rollback();} catch (SQLException ex) {ex.printStackTrace();}}
  • Jedis
    • Redis 通过MULTIEXEC等命令来实现事务操作。在 Jedis 中,可以使用jedis.multi()开始事务,然后将多个操作添加到事务队列中,最后使用jedis.exec()执行事务。不过,Redis 事务与传统关系型数据库事务有所不同,它主要是一种命令的批量执行机制,并且不提供像关系型数据库事务那样严格的隔离性保证。例如:
       jedis.multi();jedis.set("key1", "value1");jedis.set("key2", "value2");List<Object> results = jedis.exec();
  1. 适用场景

    • JDBC
      • 适用于操作关系型数据库,处理复杂的关系型数据查询、存储大量结构化数据、需要严格的事务处理以及数据完整性要求较高的场景,如企业级的业务系统(如 ERP、CRM 等)中的数据管理。
    • Jedis
      • 适用于需要快速读写数据、使用 Redis 特有的数据结构(如缓存、计数器、排行榜等场景)、处理实时性要求较高的数据(如在线游戏中的实时数据统计)以及对数据持久化要求相对不那么严格(虽然 Redis 有持久化机制但主要还是基于内存操作)的场景。

相关文章:

简单认识redis-5 jdbc 与 jedis 使用的区别

概念与功能定位 JDBC (Java Database Connectivity) JDBC 是 Java 语言用于连接数据库&#xff08;如 MySQL、Oracle 等关系型数据库&#xff09;的标准 API。它提供了一套统一的接口&#xff0c;让 Java 程序能够与各种数据库进行交互&#xff0c;执行 SQL 语句&#xff08;如…...

Unity3d动画插件DoTween使用指南

1、DoTween是什么&#xff1f; DoTween是一款对象动画类插件&#xff0c;它是一款针对Unity 3D编辑器的、快速高效的、安全的、面向对象的补间动画引擎&#xff0c;并且对C#语言开发做出了很多的优化。另外&#xff0c;它使得开发者无需通过Unity内置的Animator或Coroutines即可…...

学习函数知识

学习函数是编程中的重要基础&#xff0c;以下是关于函数的详细知识点&#xff1a; 1. 函数的定义 函数是一组执行特定任务的代码块&#xff0c;可以重复使用。在 JavaScript 中&#xff0c;可以通过以下方式定义函数&#xff1a; 函数声明&#xff1a; function functionNam…...

案例-表白墙简单实现

文章目录 效果展示初始画面提交内容后画面&#xff08;按键按下&#xff09; 代码区 效果展示 初始画面 提交内容后画面&#xff08;按键按下&#xff09; 代码区 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8">…...

和鲸科技创始人范向伟:拐点即将来临,AI产业当前的三个瓶颈

在科技迅猛发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;无疑已经成为引领新一轮产业革命的核心动力之一。全球企业纷纷拥抱AI技术&#xff0c;试图借助其变革力量在竞争中突围&#xff0c;然而业界对AI产业化的拐点何时来临却众说纷纭。毕竟AI技术从实验室到商业…...

基于函数计算FC 部署 ComfyUI实现AI生图 的优势

基于函数计算FC 部署 ComfyUI实现AI生图 的优势 部署ComfyUI实现AI生图使用函数计算FC 一键部署ComfyUI 绘画平台的优势有哪些&#xff1f; 在文章开始之前&#xff0c;先来看一下基于函数计算FC 部署 ComfyUI实现AI生图 的大概步骤&#xff0c;整个基础部署操作比较简单。即便…...

瑞萨IDE:CS+ for CC编译过程中执行脚本文件

最近发现使用CS for CC IDE发现一个很有意思的功能。编译工程过程中&#xff0c;IDE自动执行Python脚本和批处理脚本&#xff0c;极大地提高开发效率。 编写好脚本文件后&#xff0c;在IDE中选择CC-RH&#xff08;Build Tool&#xff09;->Common Options->Others。 Co…...

在 CentOS 上安装 Docker 的步骤

在 CentOS 上安装 Docker 的步骤如下&#xff1a; 步骤 1&#xff1a;更新系统包 sudo yum update -y步骤 2&#xff1a;安装依赖包 确保安装了 yum-utils、device-mapper-persistent-data 和 lvm2&#xff0c;这些是 Docker 运行所需的依赖项&#xff1a; sudo yum instal…...

【C#生态园】探索地理信息系统软件套件与库:功能、API和应用

探索地理信息系统&#xff1a;软件套件与库详解 前言 地理信息系统&#xff08;GIS&#xff09;是当今世界上广泛使用的技术之一&#xff0c;它以空间数据为基础&#xff0c;能够提供丰富的地理信息分析和可视化功能。在GIS领域&#xff0c;有许多优秀的软件套件和库&#xf…...

Jupyter的使用分享

文章目录 碎碎念安装方法1.安装Anaconda方法2.通过库的安装方式 启动使用教程1.指定目录打开2.启动后的简单使用 小结 碎碎念 前情提示 之前与许多小伙伴交流的时候&#xff0c;发现大家对于pycharm更容易上手&#xff08;可能是比较好设置中文的原因&#xff09;&#xff0c;在…...

24龙信比赛复现

案情简介&#xff1a; 近期&#xff0c;某公安机关接到受害人报案&#xff1a;通过微信添加认识一位相亲中介客服&#xff0c;客服邀约其与“相亲”对象进行选妃&#xff0c;受害人上钩后&#xff0c;整个过程被涉案团伙录音录像&#xff0c;同时&#xff0c;该客服以有更多的…...

PHP反射机制

HP反射机制是PHP语言中的一个强大特性&#xff0c;它允许程序在运行时检查、获取和操作类、方法、属性等元素的信息。这一机制极大地提高了PHP代码的灵活性和可维护性&#xff0c;使得开发者能够在不修改原有代码结构的情况下&#xff0c;动态地了解并操作代码。以下是对PHP反射…...

使用阿里云试用资源快速部署web应用-dofaker为例

本文介绍使用阿里云的试用资源部署dofaker的方法&#xff0c;本教程主要作学习在阿里云部署web应用之用&#xff0c;部署好应用之后&#xff0c;可以在任何地点通过公网ip访问web应用。 一、创建云主机 登录阿里云账户之后&#xff0c;点击控制台&#xff1a; 点击云服务器EC…...

需求11——解决字段无法清空的两个小bug

目录 背景 第一个小bug——问题阐述 第一个小bug——解决方案 第二个小bug——问题阐述 第二个小bug——解决方案 总结 背景 已经写了一个上午的文章了&#xff0c;写完这篇就可以去吃饭了。这也是这几个月的我写的最后一个小bug文章&#xff0c;把这篇文章写完就搞定了…...

mysql学习教程,从入门到精通,SQL 创建索引(CREATE INDEX 语句)(35)

1、SQL 创建索引(CREATE INDEX 语句) 在SQL中&#xff0c;创建索引&#xff08;CREATE INDEX&#xff09;是一种用于提高数据库查询性能的方法。索引类似于书的目录&#xff0c;通过它可以更快地定位到表中的特定行。以下是一个创建索引的示例&#xff0c;以及对其各部分的解释…...

Pikachu-Cross-Site Scripting-DOM型xss_x

查看代码&#xff0c;输入的内容&#xff0c;通过get请求方式&#xff0c;用text 参数带过去&#xff1b; 获取text内容&#xff0c;赋值给xss 然后拼接到 dom 里&#xff1b;构造payload的关键语句&#xff1a; <a href"xss">就让往事都随风,都随风吧</a&…...

Pikachu-Cross-Site Scripting-xss之htmlspecialchars

首先输入各种字符 查看页面元素&#xff0c;可以看到这里对一些符号做了转换&#xff0c;但是 单引号等几个符号没处理&#xff1b; 从代码上看&#xff1b;使用单引号做闭合&#xff1b; 构造payload a onclickalert(11) 提交&#xff0c;得到xss攻击...

CSS基础中padding详解

文章目录 CSS基础中padding详解一、引言二、Padding基础1、Padding属性1.1、Padding的四个方向 2、Padding的值类型3、代码示例 三、Padding简写方法1、简写顺序2、简写规则3、代码示例 四、Padding对元素大小的影响1、解决方案1.1、Box-sizing属性1.2、计算实际宽度 五、总结 …...

OpenGL笔记十九之相机系统

OpenGL笔记十九之相机系统 —— 2024-10-02 晚上 bilibili赵新政老师的教程看后笔记 code review! 文章目录 OpenGL笔记十九之相机系统1.运行1.1.游戏相机1.2.轨迹球相机 2.游戏相机与轨迹球相机切换3.博主笔记本要运行需要更改的文件更改1:28_OpenGL_CameraSystem/applicat…...

P-Tuning v2:一种普遍有效的提示调整方法

人工智能咨询培训老师叶梓 转载标明出处 预训练语言模型通过微调&#xff08;fine-tuning&#xff09;来适应特定任务虽然效果显著&#xff0c;但存在训练成本高、参数存储量大等问题。为了解决这些问题&#xff0c;清华大学的研究者们提出了一种名为P-Tuning v2的提示调整&am…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...