首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

Jedis 單機版基本操作封裝:連線、序列化、CRUD 完整範例

     編輯:DB2 教學

Jedis 單機版基本操作封裝:連線、序列化、CRUD 完整範例

Jedis 是 Java 操作 Redis 最常用的客戶端。本文展示單機連線工具類、以 表名:索引 為 Key、JSON 為 Value 的通用 DAO 實作(新增/修改、刪除、單查、全查)。

一、連線工具類

public class RedisUtil {
  private static final String HOST = "10.0.0.18";
  private static final int PORT = 6379;
  protected Jedis jedis = new Jedis(HOST, PORT);
}

生產環境建議使用 JedisPool 連線池,配置 maxTotal、maxIdle、testOnBorrow 等參數。

二、通用 Server DAO 實作

public class ServerDaoImpl extends RedisUtil implements IServerDao {
  private static final String KEY_PREFIX = "server";

  @Override
  public void saveOrUpdateServer(Server server) {
    String key = KEY_PREFIX + ":" + server.getIp();
    String value = JsonUtils.object2json(server);  // 需自行實作或用 Jackson/Gson
    jedis.set(key, value);
  }

  @Override
  public void deleteServer(String ip) {
    jedis.del(KEY_PREFIX + ":" + ip);
  }

  @Override
  public Server getServer(String ip) {
    String json = jedis.get(KEY_PREFIX + ":" + ip);
    if (json == null) return null;
    return JsonUtils.json2Object(json, Server.class);
  }

  @Override
  public List getAllServer() {
    List list = new ArrayList<>();
    Set keys = jedis.keys(KEY_PREFIX + ":*");
    for (String k : keys) {
      String json = jedis.get(k);
      if (json != null) {
        list.add(JsonUtils.json2Object(json, Server.class));
      }
    }
    return list;
  }
}

三、關鍵注意事項

  1. keys 指令慎用:jedis.keys(pattern) 會掃描全庫,**生產環境嚴禁使用**,請改用 SCAN 迭代器。
  2. 序列化選擇:JSON 可讀性好、跨語言;對效能極敏感可考慮 Protobuf/Kryo/FST 二進位序列化。
  3. 連線池化:單機 Jedis 非執行緒安全,多執行緒必須用 JedisPool。
  4. Key 設計:業務域:實體:唯一鍵(如 server:ip:10.0.0.1),便於管理與 TTL 設定。
  5. 異常處理:所有 Jedis 操作建議包裝 try-catch,失敗時記錄日誌並拋出業務異常。

四、集群模式提示

文中提到集群搭建成功但介面測試有問題。Jedis Cluster 用法:

Set nodes = new HashSet<>();
nodes.add(new HostAndPort("10.0.0.1", 6379));
nodes.add(new HostAndPort("10.0.0.2", 6379));
JedisCluster jc = new JedisCluster(nodes, new JedisPoolConfig());
// 操作 API 與單機一致,自動按 Slot 路由

常見坑:keys、flushAll 等指令不支援 Cluster 模式;Lua 腳本需確保所有 Key 落在同一 Slot(用 {tag}key 強制)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved