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

简单认识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 有持久化机制但主要还是基于内存操作)的场景。


http://www.kler.cn/news/338916.html

相关文章:

  • Redis 缓存策略详解:提升性能的四种常见模式
  • springboot整合mybatis案例
  • Spring Boot助力医院数据管理
  • 【C语言】关于指针各项细节以及与其他知识点关联
  • Java Web 开发
  • 目标检测 DN-DETR(2022)
  • 数据库分区
  • tensorflow快速入门--如何定义张量、定义网络结构、超参数设置、模型训练???
  • 程序设计基础I-实验5 一维数组
  • XTuner微调个人小助手认知
  • 详细介绍pandas 与 numpy 在python中结合用法
  • 硬件开发笔记(三十):TPS54331电源设计(三):设计好的原理图转设计PCB布板,12V输入电路布局设计
  • 倪师学习笔记-天纪-01
  • 从prometheus监控接口读取CPU和内存信息
  • [Python] 编程入门:理解变量类型
  • python+selenium+unittest自动化测试框架
  • [C++]使用纯opencv部署yolov11-seg实例分割onnx模型
  • 【C++】模拟实现hash_table(哈希表)
  • docker minio进行数据迁移
  • MCU订阅-发布模式