Java 連接 Redis 工具包之 Jedis 的單例模式用法,非常好用哦~

2020-12-08 時代Java

工具包Jedis支持所Redis命令,用法也非常簡單。

為了避免使用時每次都要連接redis,可以使用單例模式,下面介紹這種模式的編程方法,先下載 Jedis 工具包(下載網址見附錄)。

1、單例模式的服務類

import redis.clients.jedis.Jedis;

import redis.clients.jedis.JedisPool;

import redis.clients.jedis.JedisPoolConfig;

public class RedisPool {

private static final String REDIS_HOST = "192.168.1.2";//主機IP

private static final int REDIS_PORT = 99;//埠號

//connectionTimeout 連接超時(默認2000ms) soTimeout 響應超時(默認2000ms)

private static final int REDIS_TIMEOUT = 2000;

//private static final String REDIS_PASSWORD = "123456";

private static final String REDIS_PASSWORD = null;//無密碼時使用NULL

private static JedisPool pool = null;

static {

if(pool == null) {

JedisPoolConfig config = new JedisPoolConfig();

//控制一個pool可分配多少個jedis實例,通過pool.getResource()來獲取;

//如果賦值為-1,則表示不限制;如果pool已經分配了maxActive個jedis實例,則此時pool的狀態為exhausted(耗盡)。

config.setMaxTotal(10);

//控制一個pool最多有多少個狀態為idle(空閒的)的jedis實例。

config.setMaxIdle(3);

//表示當borrow(引入)一個jedis實例時,最大的等待時間,如果超過等待時間,則直接拋出JedisConnectionException;單位毫秒

//小於零:阻塞不確定的時間, 默認-1

config.setMaxWaitMillis(1000*100);

//在borrow(引入)一個jedis實例時,是否提前進行validate操作;如果為true,則得到的jedis實例均是可用的;

config.setTestOnBorrow(true);

//return 一個jedis實例給pool時,是否檢查連接可用性(ping())

config.setTestOnReturn(true);

pool = new JedisPool(config, REDIS_HOST, REDIS_PORT, REDIS_TIMEOUT, REDIS_PASSWORD);

}

}

public static Jedis get() {

return pool.getResource();

}

public static void release(Jedis jd) {

if(jd != null) {

jd.close();

}

}

}

2、應用方法

Jedis方法和Redis命令是一致的,是一一對應的。

import redis.clients.jedis.Jedis;

import redis.clients.jedis.RedisPool;

public class NowJava {

public static void main(String[] args) {

//取連結

Jedis jd = JavaRedisPool.get();

//進行操作,Jedis方法和Redis命令是一致的。

jd.set("website1", "htts://NowJava.com");

jd.set("website2", "htts://www.baidu.com");

//釋放連結

if(jd != null) RedisPool.release(jd);

}

}

附:

Jedis下載:https://nowjava.com/download/31181

Redis安裝及使用教程:https://nowjava.com/book/redis-course

--知識分享,時代前行!~~ 時代Java還有更多好文章……

相關焦點

  • 走進 Redis:Redis 的安裝、使用以及集群的搭建
    DECR        ##遞減數字,僅僅對數字類型的鍵有用,相當於Java的i–,用法:DECR keyDECRBY      ##減少指定的數字,僅僅對數字類型的鍵有用,相當於Java的i-=3,用法:DECRBY key decrement,意思是key自減decrement,decrement可以為正數,表示增加。
  • 如何優雅的封裝一套redis客戶端工具
    因為springboot框架的存在,自從有了springboot框架以後自動裝配能力:除了必要的一些配置,大多數配置都不用再寫了,告別了一堆堆的配置文件自動管理依賴:只需要引入spring-boot-starter-xxx,需要的jar包以及jar包的版本,
  • 細數 redis 的幾種 getshell 方法
    只要把我們的公鑰寫在對方的 .ssh/authorized_keys 文件裡再去用 ssh 連接就不需伺服器的帳號密碼了>\n\n"); jedis.configSet("dir","/home/web/wwwroot/"); jedis.configSet("dbfilename","x.php"); jedis.save(); jedis.close(); }}反序列化我在看其他人寫的一些關於 redis getshell
  • 從零開始學習大數據系列(六十五) Redis入門及基礎實踐
    [redis等] 靈活的數據模型:NoSQL無需事先為要存儲的數據建立欄位,隨時可以存儲自定義的數據格式。而在關係資料庫裡,增刪欄位是一件非常麻煩的事情。如果是非常大數據量的表,增加欄位簡直就是一個噩夢。
  • Java的單例模式
    一、什麼是單例模式?
  • 這才叫細:帶你深入理解Redis分布式鎖
    三、單點實例安全問題如果redis是單master模式的,當這臺機宕機的時候,那麼所有的客戶端都獲取不到鎖了,為了提高可用性,可能就會給這個master加一個slave,但是因為redis的主從同步是異步進行的,可能會出現客戶端1設置完鎖後,master掛掉,slave提升為master
  • Redisclient 1.0 發布,Java 的 Redis 客戶端 GUI 工具
    > 剪切,複製,粘貼 Redis 數據 導入,導出 Redis 數據 搜索 Redis 數據 通過關鍵字,數據類型,大小來排序 Redis 數據 導航歷史 RedisClient 是  Redis 客戶端 GUI 工具
  • Redis 延時任務(高手養成篇)
    ;    }}運行的測試Demo為,我們設定延遲時間為3秒package com.rjzheng.delay2;import java.util.ArrayList;import java.util.List;import java.util.concurrent.DelayQueue
  • Redis 單例、主從模式、sentinel 以及集群的配置方式及優缺點對比
    redis主從模式解決了數據備份和單例可能存在的性能問題,但是其也引入了新的問題。由於主從模式配置了三個redis實例,並且每個實例都使用不同的ip(如果在不同的機器上)和埠號。根據前面所述,主從模式下可以將讀寫操作分配給不同的實例進行從而達到提高系統吞吐量的目的,但也正是因為這種方式造成了使用上的不便,因為每個客戶端連接redis實例的時候都是指定了ip和埠號的,如果所連接的redis實例因為故障下線了,而主從模式也沒有提供一定的手段通知客戶端另外可連接的客戶端地址,因而需要手動更改客戶端配置重新連接。
  • 【110期】面試官:Redis分布式鎖如何解決鎖超時問題?
    為了解決這個問題, 本文將用完整的代碼和測試用例進行驗證, 希望能給小夥伴帶來一點幫助二、準備工作https://pan.baidu.com/share/init?surl=NN0c0tDYQjBTTPA-WTT3yg提取碼: 8f2ahttps://pan.baidu.com/share/init?
  • Java知識乾貨:搞懂Redis知識點,提升面試成功率
    我們可以對現有的客戶端工具,進行二次封裝。就是要開發人員賦予業務區分,每個業務都是在開發前,管理人員定下來的,這個管理就比較簡單了。2、擴充集群我們在開發Web服務時,會用類似jedis客戶端連接Redis伺服器,會在配置文件中加入Redis集群地址。
  • Redis實現分布式阻塞隊列
    普通非阻塞鎖實現public class RedisLock {private Jedis jedis; public RedisLock(Jedis jedis) { this.jedis = jedis; } public boolean lock(String key) { return jedis.set(key, "", "nx", "ex
  • 為什麼要用單例模式?
    我們在編程中最常用的模式就是單例模式了,然而單例模式都用在什麼場合?為什麼不用靜態方法而要用單例模式呢?
  • PHP資料庫操作三:redis用法分析
    微信公眾號:PHP在線連結:http://www.jb51.net/article/121316.htm本文實例講述了PHP資料庫操作redis用法。增加了安全驗證(可為伺服器設置連接密碼)。redis的主從分離等系統更完善(官方開發)。原生支持發布/訂閱、隊列、緩存等工具。當然,相比較memcache,它的資料庫操作也較為複雜。redis的應用場景和安裝redis除了可以用在memcache能用的地方,它還可以用在:可以用鍊表來存儲數據,讀取其最新信息。
  • Java單例模式深入詳解
    我主要是應用在使用普通類模擬枚舉類型裡,後來發現這就是傳說中的單例模式。構造函數弄成private 就是單例模式,即不想讓別人用new 方法來創建多個對象,可以在類裡面先生成一個對象,然後寫一個public static方法把這個對象return出去。
  • 黑馬程式設計師:SpringBoot教程,SpringBoot高級之原理分析
    >}當Jedis坐標導入後,可以加載到 redis.clients.jedis.Jedis 這個類,未導入時,加載不到redis.clients.jedis.Jedis這個類,所以通過異常捕獲可以返回是否加載。
  • Java 最常見面試題
    九、設計模式88.說一下你熟悉的設計模式?89.簡單工廠和抽象工廠有什麼區別?十、Spring/Spring MVC90.為什麼要使用 spring?91.解釋一下什麼是 aop?92.解釋一下什麼是 ioc?93.spring 有哪些主要模塊?
  • 使用Redis,你必須知道的21個注意要點
    ❞2.2  慎用Redis的monitor命令Redis Monitor 命令用於實時列印出Redis伺服器接收到的命令,如果我們想知道客戶端對redis服務端做了哪些命令操作,就可以用Monitor 命令查看,但是它一般「調試」用而已,儘量不要在生產上用!
  • 單例模式各版本的原理與實踐
    作者:曹豐斌連結:https://www.jianshu.com/p/fc7fc57d43601.單例模式概述(1)引言單例模式是應用最廣的模式之一,也是23種設計模式中最基本的一個。本文旨在總結通過Java實現單例模式的各個版本的優缺點及適用場景,詳細分析如何實現線程安全的單例模式,並探討單例模式的一些擴展。
  • Redis面試總結
    Redis的出色之處不僅僅是性能,Redis最大的魅力是支持保存多種數據結構,此外單個value的最大限制是1GB,不像 memcached只能保存1MB的數據,因此Redis可以用來實現很多有用的功能,比方說用他的List來做FIFO雙向鍊表,實現一個輕量級的高性 能消息隊列服務,用他的Set可以做高性能的tag系統等等。