简单认识redis-5 jdbc 与 jedis 使用的区别
-
概念与功能定位
- 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")
。
- JDBC (Java Database Connectivity)
-
连接建立方式
- JDBC
- 连接建立相对复杂,需要加载数据库驱动(不同的数据库有不同的驱动,如 MySQL 的驱动),然后通过
DriverManager
获取数据库连接。例如,连接 MySQL 数据库的基本代码如下:
- 连接建立相对复杂,需要加载数据库驱动(不同的数据库有不同的驱动,如 MySQL 的驱动),然后通过
- JDBC
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();}}
-
数据操作方式
- JDBC
- 操作数据主要通过 SQL 语句。需要创建
Statement
或PreparedStatement
对象来执行 SQL 操作。例如,查询用户表中年龄大于 20 岁的用户:
- 操作数据主要通过 SQL 语句。需要创建
- JDBC
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();}}
-
事务处理
- JDBC
- 有完善的事务处理机制,支持 ACID(原子性、一致性、隔离性、持久性)特性。通过
Connection
对象的setAutoCommit(false)
等方法来控制事务的开始、提交和回滚。例如:
- 有完善的事务处理机制,支持 ACID(原子性、一致性、隔离性、持久性)特性。通过
- JDBC
try {connection.setAutoCommit(false);// 执行多个SQL操作statement1.executeUpdate();statement2.executeUpdate();connection.commit();} catch (SQLException e) {try {connection.rollback();} catch (SQLException ex) {ex.printStackTrace();}}
- Jedis
- Redis 通过
MULTI
、EXEC
等命令来实现事务操作。在 Jedis 中,可以使用jedis.multi()
开始事务,然后将多个操作添加到事务队列中,最后使用jedis.exec()
执行事务。不过,Redis 事务与传统关系型数据库事务有所不同,它主要是一种命令的批量执行机制,并且不提供像关系型数据库事务那样严格的隔离性保证。例如:
- Redis 通过
jedis.multi();jedis.set("key1", "value1");jedis.set("key2", "value2");List<Object> results = jedis.exec();
-
适用场景
- JDBC
- 适用于操作关系型数据库,处理复杂的关系型数据查询、存储大量结构化数据、需要严格的事务处理以及数据完整性要求较高的场景,如企业级的业务系统(如 ERP、CRM 等)中的数据管理。
- Jedis
- 适用于需要快速读写数据、使用 Redis 特有的数据结构(如缓存、计数器、排行榜等场景)、处理实时性要求较高的数据(如在线游戏中的实时数据统计)以及对数据持久化要求相对不那么严格(虽然 Redis 有持久化机制但主要还是基于内存操作)的场景。
- JDBC
相关文章:
简单认识redis-5 jdbc 与 jedis 使用的区别
概念与功能定位 JDBC (Java Database Connectivity) JDBC 是 Java 语言用于连接数据库(如 MySQL、Oracle 等关系型数据库)的标准 API。它提供了一套统一的接口,让 Java 程序能够与各种数据库进行交互,执行 SQL 语句(如…...

Unity3d动画插件DoTween使用指南
1、DoTween是什么? DoTween是一款对象动画类插件,它是一款针对Unity 3D编辑器的、快速高效的、安全的、面向对象的补间动画引擎,并且对C#语言开发做出了很多的优化。另外,它使得开发者无需通过Unity内置的Animator或Coroutines即可…...
学习函数知识
学习函数是编程中的重要基础,以下是关于函数的详细知识点: 1. 函数的定义 函数是一组执行特定任务的代码块,可以重复使用。在 JavaScript 中,可以通过以下方式定义函数: 函数声明: function functionNam…...

案例-表白墙简单实现
文章目录 效果展示初始画面提交内容后画面(按键按下) 代码区 效果展示 初始画面 提交内容后画面(按键按下) 代码区 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8">…...

和鲸科技创始人范向伟:拐点即将来临,AI产业当前的三个瓶颈
在科技迅猛发展的时代,人工智能(AI)无疑已经成为引领新一轮产业革命的核心动力之一。全球企业纷纷拥抱AI技术,试图借助其变革力量在竞争中突围,然而业界对AI产业化的拐点何时来临却众说纷纭。毕竟AI技术从实验室到商业…...

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

瑞萨IDE:CS+ for CC编译过程中执行脚本文件
最近发现使用CS for CC IDE发现一个很有意思的功能。编译工程过程中,IDE自动执行Python脚本和批处理脚本,极大地提高开发效率。 编写好脚本文件后,在IDE中选择CC-RH(Build Tool)->Common Options->Others。 Co…...
在 CentOS 上安装 Docker 的步骤
在 CentOS 上安装 Docker 的步骤如下: 步骤 1:更新系统包 sudo yum update -y步骤 2:安装依赖包 确保安装了 yum-utils、device-mapper-persistent-data 和 lvm2,这些是 Docker 运行所需的依赖项: sudo yum instal…...
【C#生态园】探索地理信息系统软件套件与库:功能、API和应用
探索地理信息系统:软件套件与库详解 前言 地理信息系统(GIS)是当今世界上广泛使用的技术之一,它以空间数据为基础,能够提供丰富的地理信息分析和可视化功能。在GIS领域,有许多优秀的软件套件和库…...

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

24龙信比赛复现
案情简介: 近期,某公安机关接到受害人报案:通过微信添加认识一位相亲中介客服,客服邀约其与“相亲”对象进行选妃,受害人上钩后,整个过程被涉案团伙录音录像,同时,该客服以有更多的…...
PHP反射机制
HP反射机制是PHP语言中的一个强大特性,它允许程序在运行时检查、获取和操作类、方法、属性等元素的信息。这一机制极大地提高了PHP代码的灵活性和可维护性,使得开发者能够在不修改原有代码结构的情况下,动态地了解并操作代码。以下是对PHP反射…...

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

需求11——解决字段无法清空的两个小bug
目录 背景 第一个小bug——问题阐述 第一个小bug——解决方案 第二个小bug——问题阐述 第二个小bug——解决方案 总结 背景 已经写了一个上午的文章了,写完这篇就可以去吃饭了。这也是这几个月的我写的最后一个小bug文章,把这篇文章写完就搞定了…...
mysql学习教程,从入门到精通,SQL 创建索引(CREATE INDEX 语句)(35)
1、SQL 创建索引(CREATE INDEX 语句) 在SQL中,创建索引(CREATE INDEX)是一种用于提高数据库查询性能的方法。索引类似于书的目录,通过它可以更快地定位到表中的特定行。以下是一个创建索引的示例,以及对其各部分的解释…...

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

Pikachu-Cross-Site Scripting-xss之htmlspecialchars
首先输入各种字符 查看页面元素,可以看到这里对一些符号做了转换,但是 单引号等几个符号没处理; 从代码上看;使用单引号做闭合; 构造payload a onclickalert(11) 提交,得到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:一种普遍有效的提示调整方法
人工智能咨询培训老师叶梓 转载标明出处 预训练语言模型通过微调(fine-tuning)来适应特定任务虽然效果显著,但存在训练成本高、参数存储量大等问题。为了解决这些问题,清华大学的研究者们提出了一种名为P-Tuning v2的提示调整&am…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...