18 Java與redis集群的通信

1、引入依賴
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.6.3</version></dependency>
2、配置
# Redis集群服務器地址
redis.nodes=aliyun:6900,aliyun:6901,aliyun:6902,aliyun:6930,aliyun:6931,aliyun:6932
#在集群中執行命令時要遵循的最大重定向數目
redis.cluster.max-redirects=5
# Redis服務器連接密碼(默認為空)
redis.password=null
redis.timeout=30000
# 連接池最大連接數(使用負值表示沒有限制)
redis.maxTotal=30
# 連接池中的最大空閑連接
redis.maxIdle=10
redis.numTestsPerEvictionRun=1024
redis.timeBetweenEvictionRunsMillis=30000
redis.minEvictableIdleTimeMillis=1800000
redis.softMinEvictableIdleTimeMillis=10000
# 連接池最大阻塞等待時間(使用負值表示沒有限制)
redis.maxWaitMillis=1500
redis.testOnBorrow=true
redis.testWhileIdle=true
redis.blockWhenExhausted=false
redis.JmxEnabled=true
3、獲取api對象
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisSentinelPool;import java.util.HashSet;
import java.util.Set;@Configuration
@PropertySource("classpath:application.properties")
public class RedisClusterConfig {@Value("${redis.nodes}")private String hosts;@Value("${redis.cluster.max-redirects}")private int maxRedirects;@Value("${redis.timeout}")private int timeout;@Value("${redis.maxIdle}")private int maxIdle;@Value("${redis.maxWaitMillis}")private int maxWaitMillis;@Value("${redis.blockWhenExhausted}")private Boolean blockWhenExhausted;@Value("${redis.JmxEnabled}")private Boolean JmxEnabled;@Beanpublic JedisPoolConfig  jedisPoolConfigFactory() {JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();jedisPoolConfig.setMaxIdle(maxIdle);jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);// 連接耗盡時是否阻塞, false報異常,true阻塞直到超時, 默認truejedisPoolConfig.setBlockWhenExhausted(blockWhenExhausted);// 是否啟用pool的jmx管理功能, 默認truejedisPoolConfig.setJmxEnabled(JmxEnabled);jedisPoolConfig.setTestOnBorrow(true);jedisPoolConfig.setTestOnReturn(true);return jedisPoolConfig;}@Beanpublic JedisCluster getJedisCluster(JedisPoolConfig jedisPoolConfig) {Set<HostAndPort> nodes = new HashSet<>();String[] hostsArray = hosts.split(",");for (String ipPort : hostsArray) {String[] ipPortPair = ipPort.split(":");nodes.add(new HostAndPort(ipPortPair[0].trim(), Integer.valueOf(ipPortPair[1].trim())));}return new JedisCluster(nodes,timeout,1000,1,jedisPoolConfig);}}
4、操作String類型示例
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisSentinelPool;/*** 操作字符串類型*/
@Component
public class RedisString {public final static String RS_STR_NS = "rs:";@Autowiredprivate JedisCluster jedisCluster;/*** 向Redis中存值,永久有效*/public String set(String key, String value) {try {return jedisCluster.set(RS_STR_NS +key, value);} catch (Exception e) {throw new RuntimeException("向Redis中存值失敗!");} finally {}}/*** 根據傳入Key獲取指定Value*/public String get(String key) {try {return jedisCluster.get(RS_STR_NS +key);} catch (Exception e) {throw new RuntimeException("獲取Redis值失敗!");} finally {}}}
5、測試
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
public class TestRedisString {@Autowiredprivate RedisString redisString;@Testvoid testSet(){System.out.println(redisString.set("test","Hello Java"));}@Testvoid testGet(){System.out.println(redisString.get("test"));}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/211611.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/211611.shtml
英文地址,請注明出處:http://en.pswp.cn/news/211611.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

20道計算機網絡面試題

網絡分層 1、說說OSI 七層、TCP/IP 四層的關系和區別&#xff1f; OSI 七層從下往上依次是&#xff1a;物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層。一張圖給你整明白&#xff1a; TCP/IP 四層從下往上依次是&#xff1a;網絡接口層、網絡層、傳輸層、應用…

MATLAB - 評估擬合優度、評價擬合效果

系列文章目錄 文章目錄 系列文章目錄前言一、如何評估擬合優度二、擬合優度統計2.1 SSE - 誤差引起的平方和2.2 R 平方2.3 自由度調整 R 平方2.4 均方根誤差 三、MATLAB - 評估曲線擬合度3.1 加載數據并擬合多項式曲線3.2 繪制擬合方程、數據、殘差和預測范圍圖3.3 評估指定點3…

java--Object

1.Object類的作用 Object類是java中所有類的祖宗類&#xff0c;因此&#xff0c;java中所有類的對象都可以直接使用Object類中提供一些方法 2.Object類的常見方法 ①toString存在的意義&#xff1a;toString()方法存在的意義就是為了被子類重寫&#xff0c;以便返回對象具體的…

【Python實戰系列】一文徹底搞懂異常捕獲及處理(理論+源碼)

一、問題 異常處理是Python中一種用于處理程序運行時錯誤的機制。在編寫代碼時&#xff0c;可能會出現各種不可預測的情況&#xff0c;例如除零錯誤、文件不存在、網絡連接問題等等。為了確保程序能夠在出現錯誤時正常運行&#xff0c;您可以使用異常處理機制來捕獲和處理這些異…

K8S學習指南(5)-k8s核心對象namespace

文章目錄 前言什么是Namespace&#xff1f;Namespace的類型創建Namespace使用kubectl創建Namespace示例 切換Namespace查看Namespace在Namespace中部署應用程序使用Namespace進行資源隔離Namespace的權限控制刪除Namespace總結 前言 Kubernetes&#xff08;簡稱K8s&#xff09…

前端知識(十六)——js獲取時間戳方法

1、獲取當前時間 let date new Date() 2、將字符串或者對象直接轉化成時間戳 方法&#xff1a;Date.parse() 注意&#xff1a;不推薦這種方法&#xff0c;毫秒級別的數值被轉化為000 3、通過valueOf()函數返回指定的原始值獲得精準的時間戳值 方法&#xff1a;valueOf()…

git自動更新功能

確認權限 因為一般Linux系統網頁用的www 或 www-data用戶和用戶組,所以要實現自動來去,首先要在www用戶權限下生成ssh密鑰,不然沒有權限,其次就是,要把用root用戶拉去的代碼,批量改成www用戶 1. 給www權限 vi /etc/sudoers www ALL=(ALL) NOPASSWD:/bin/chow…

memset的用法

語法 1.引用所需頭文件 #include<string.h> 2.聲明 void * memset ( void * ptr, int value, size_t num ); ptr 表示要設置的數據的起始地址。如果是要設置整個數組的數據&#xff0c;那ptr就是數組名&#xff08;數組首元素的地址&#xff09; value 表示要設置的值…

【學習筆記】lyndon分解

摘抄自quack的ppt。 這部分和 s a sa sa的關聯比較大&#xff0c;可以加深對 s a sa sa的理解。 Part 1 如果字符串 s s s的字典序在 s s s以及 s s s的所有后綴中是最小的&#xff0c;則稱 s s s是一個 lyndon \text{lyndon} lyndon串。 lyndon \text{lyndon} lyndon分解&a…

c++ 類和對象-封裝意義一

屬性和行為作為整體 示例一&#xff1a;設計一個圓類&#xff0c;求圓的周長 #include<iostream> using namespace std; //圓周率 const double PI 3.14; //設計一個圓類&#xff0c;求圓的周長 //圓求周長的公式&#xff1a;2*PI*半徑 //class代表設計一個類&#xf…

熔池處理Tecplot 360 和CFD-Post做出一樣的效果

熔池處理Tecplot 360 和CFD-Post做出一樣的效果 效果展示詳細講述Tecplot 360實現過程分析實現過程第一步實現過程第二步界面美化注意點效果展示 詳細講述Tecplot 360實現過程 分析 這里主要是將體積分數大于0.5的區域抽取出來,然后顯示溫度場,所以這里主要考慮下面連個思考…

PCL 三維點云中求解圓的三維方程

一、概述 在給出的三維點云中求解擬合圓的三維方程 二、代碼示例 #include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/sample_consensus/ransac.h> #include <pcl/sample_consensus/sac_model_circle3D.h> // 擬

【貪心算法】 Opponents

這道題寫偽代碼就好了&#xff01; Description Arya has n opponents in the school. Each day he will fight with all opponents who are present this day. His opponents have some fighting plan that guarantees they will win, but implementing this plan requires pr…

【開源】基于Vue+SpringBoot的固始鵝塊銷售系統

項目編號&#xff1a; S 060 &#xff0c;文末獲取源碼。 \color{red}{項目編號&#xff1a;S060&#xff0c;文末獲取源碼。} 項目編號&#xff1a;S060&#xff0c;文末獲取源碼。 目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、功能模塊2.1 數據中心模塊2.2 鵝塊類型模塊2.3 固…

Mybatis-plus中wrapper的區別

在MyBatis-Plus框架中,LambdaQueryWrapper 和 QueryWrapper 是用于構建查詢條件的兩個主要類。它們都是查詢條件構造器,用于在查詢中生成 WHERE 子句的條件。 QueryWrapper QueryWrapper 是 MyBatis-Plus 3.x 中引入的條件構造器。它的主要特點是使用字符串作為字段名,并支…

python 數字保留小數位數 結果是字符串

precision 2 f{px :.{precision}f} # 自定義動態 f{x:.2f} 數字 轉 字符串 保留dot后面的位數 結果 字符串

從關鍵新聞和最新技術看AI行業發展(2023.11.20-12.3第十一期) |【WeThinkIn老實人報】

Rocky Ding 公眾號&#xff1a;WeThinkIn 寫在前面 【WeThinkIn老實人報】旨在整理&挖掘AI行業的關鍵新聞和最新技術&#xff0c;同時Rocky會對這些關鍵信息進行解讀&#xff0c;力求讓讀者們能從容跟隨AI科技潮流。也歡迎大家提出寶貴的優化建議&#xff0c;一起交流學習&…

MySQL概述-安裝與啟動

數據庫相關概念 MySQL數據庫 下載地址 MySQL :: Download MySQL Installer (Archived Versions) 啟動方法 啟動密令&#xff1a;net start mysql80 停止密令&#xff1a;net stop mysql80 客戶端鏈接方法 注意用系統自帶的命令行工具執行指令需要設置環境在高級系統設置中…

解決使用pnpm安裝時Sharp模塊報錯的方法

在使用pnpm進行項目依賴安裝的過程中&#xff0c;有時候會遇到Sharp模塊報錯的情況。Sharp是一個用于處理圖像的Node.js模塊&#xff0c;但它的安裝可能會因為各種原因而失敗&#xff0c;導致項目無法正常啟動。本文將介紹這個問題的方法。 問題描述 解決方法 在命令行分別輸…

Linux-幫助命令的使用和練習(type、man、help、info詳解)

目錄 5.3.1 type-判斷是否為內部命令 5.3.2 man-查看詳細文檔 5.3.3 help-查看shell內部命令的幫助信息 5.3.4 --help-查看系統外部命令幫助信息 5.3.5 info-查看info格式的幫助指令 5.3.6 /usr/share/doc-存儲軟件包的文檔信息 平時我們看到的命令大多數都可以查看幫助文…