使用jedis連線單機和叢集redis的兩種方式
Redis伺服器的部署方式可分為單機和叢集的方式,使用Jedis的對應訪問介面也相應不用。如何使用Jedis操作兩種不同部署方式的Redis資料,以及在web工程裡如何快速的切換兩種不同的訪問方式,是本文要介紹的主要內容。
本示例使用的相關框架版本如下:
Jedis:jedis-2.8.1
spring:spring 4.0.8
涉及的主要類圖如下:
JedisClient與JedisClsterClient都實現了IJedisClinet介面,接口裡定義了操作redis的各種方法,這兩個Client實現類分別對應著單機和叢集兩種訪問方式。RedisOperate類是供其它類呼叫的Redis操作類,它持有IJedisClient介面的實現類物件,這個物件由spring注入,具體使用哪種連線方式取決於注入的IJedisClient的實現類型別。這裡使用的是策略模式。
JedisClusterFactory實現了org.springframework.beans.factory.FactoryBean和org.springframework.beans.factory.InitializingBean介面,用於為JedisClusterClient提供redis.clients.jedis.JedisCluster操作類。JedisClient的操作類是redis.clients.jedis.Jedis,從redis.clients.jedis.JedisPool類中獲取。
Spring的配置如下:
<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd" default-lazy-init="true"><description>Jedis Configuration</description><!-- 載入配置屬性檔案 --><context:property-placeholderignore-unresolvable="true"location="classpath:jeeplus.properties" /><!-- redis 單機連線方案 --><beanid="jedisPoolConfig"class="redis.clients.jedis.JedisPoolConfig"><propertyname="maxIdle"value="300" /><!-- 最大能夠保持idel狀態的物件數 --><propertyname="maxTotal"value="60000" /><!-- 最大分配的物件數 --><propertyname="testOnBorrow"value="true" /><!-- 當呼叫borrow Object方法時,是否進行有效性檢查 --></bean><beanid="jedisPool"class="redis.clients.jedis.JedisPool"><constructor-argindex="0"ref="jedisPoolConfig" /><constructor-argindex="1"value="${redis.host}" /><constructor-argindex="2"value="${redis.port}"type="int" /></bean><!-- redis 叢集連線方案 --><beanname="genericObjectPoolConfig"class="org.apache.commons.pool2.impl.GenericObjectPoolConfig"><propertyname="maxWaitMillis"value="-1" /><propertyname="maxTotal"value="8" /><propertyname="minIdle"value="0" /><propertyname="maxIdle"value="8" /></bean><beanid="jedisCluster"class="com.jeeplus.common.redis.JedisClusterFactory"><propertyname="connectionTimeout"value="3000" /><propertyname="soTimeout"value="3000" /><propertyname="maxRedirections"value="5" /><propertyname="genericObjectPoolConfig"ref="genericObjectPoolConfig" /><propertyname="jedisClusterNodes"><set><value>127.0.0.1:7000</value><value>127.0.0.1:7001</value><value>127.0.0.1:7002</value></set></property></bean><!-- 真正的redis操作類,具體連線方式由jedisClient的ref屬性決定
可選項為jedisClusterClient、jedisClient
--><beanname="redisOperate"class="com.jeeplus.common.redis.RedisOperate"><propertyname="jedisClient"ref="jedisClusterClient" /></bean></beans>
在進行單機、叢集切換時,只需要修改<property name="jedisClient" ref="jedisClusterClient" /> 配置即可。
下面看看程式碼:
IJedisClient
public interfaceIJedisClient{
/**
* 獲取快取
* @param key 鍵
* @return 值
*/
public String get(String key);
/**
* 獲取快取
* @param key 鍵
* @return 值
*/
public Object getObject(String key);
/**
* 設定快取
* @param key 鍵
* @param value 值
* @param cacheSeconds 超時時間,0為不超時
* @return
*/
public String set(String key, String value, int cacheSeconds);
/**
* 設定快取
* @param key 鍵
* @param value 值
* @param cacheSeconds 超時時間,0為不超時
* @return
*/
public String setObject(String key, Object value, int cacheSeconds);
/**
* 獲取List快取
* @param key 鍵
* @return 值
*/
public List<String> getList(String key);
/**
* 獲取List快取
* @param key 鍵
* @return 值
*/
public List<Object> getObjectList(String key);
/**
* 設定List快取
* @param key 鍵
* @param value 值
* @param cacheSeconds 超時時間,0為不超時
* @return
*/
publiclongsetList(String key, List<String> value, int cacheSeconds);
/**
* 設定List快取
* @param key 鍵
* @param value 值
* @param cacheSeconds 超時時間,0為不超時
* @return
*/
publiclongsetObjectList(String key, List<Object> value, int cacheSeconds);
/**
* 向List快取中新增值
* @param key 鍵
* @param value 值
* @return
*/
publiclonglistAdd(String key, String... value);
/**
* 向List快取中新增值
* @param key 鍵
* @param value 值
* @return
*/
publiclonglistObjectAdd(String key, Object... value);
/**
* 獲取快取
* @param key 鍵
* @return 值
*/
public Set<String> getSet(String key);
/**
* 獲取快取
* @param key 鍵
* @return 值
*/
public Set<Object> getObjectSet(String key);
/**
* 設定Set快取
* @param key 鍵
* @param value 值
* @param cacheSeconds 超時時間,0為不超時
* @return
*/
publiclongsetSet(String key, Set<String> value, int cacheSeconds);
/**
* 設定Set快取
* @param key 鍵
* @param value 值
* @param cacheSeconds 超時時間,0為不超時
* @return
*/
publiclongsetObjectSet(String key, Set<Object> value, int cacheSeconds);
/**
* 向Set快取中新增值
* @param key 鍵
* @param value 值
* @return
*/
publiclongsetSetAdd(String key, String... value);
/**
* 向Set快取中新增值
* @param key 鍵
* @param value 值
* @return
*/
publiclongsetSetObjectAdd(String key, Object... value);
/**
* 獲取Map快取
* @param key 鍵
* @return 值
*/
public Map<String, String> getMap(String key);
/**
* 獲取Map快取
* @param key 鍵
* @return 值
*/
public Map<String, Object> getObjectMap(String key);
/**
* 設定Map快取
* @param key 鍵
* @param value 值
* @param cacheSeconds 超時時間,0為不超時
* @return
*/
public String setMap(String key, Map<String, String> value, int cacheSeconds);
/**
* 設定Map快取
* @param key 鍵
* @param value 值
* @param cacheSeconds 超時時間,0為不超時
* @return
*/
public String
相關推薦
使用jedis連線單機和叢集redis的兩種方式
Redis伺服器的部署方式可分為單機和叢集的方式,使用Jedis的對應訪問介面也相應不用。如何使用Jedis操作兩種不同部署方式的Redis資料,以及在web工程裡如何快速的切換兩種不同的訪問方式,是本文要介紹的主要內容。
本示例使用的相關框架版本如下:
測試redis叢集的兩種方式:分片和哨兵
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import redis.clients.jedis.Jedi
spring boot配置同時支援單機和叢集redis
正式環境都是用叢集版redis,開發用的單機版,領導要求通過配置檔案來確定是單機還是叢集,由於單機版已經實現了,那麼準備就在單機版基礎上進行開發,然後發現spring boot1.2版本已經比較老,就升級版本,由於升級了spring boot版本,對應其他配置也進行了修改。最
虛擬機器下 solr7.1 cloud 叢集搭建 (手動解壓和官方指令碼兩種方式)
準備工作:
vmware workstation 12,OS使用的是ubuntu16.04,三臺虛擬機器搭建一個solr叢集,zookeeper共用這三臺虛擬機器組成zookeeper叢集。
zookeeper的版本為3.4.10,solr版本為7.1,不使用
P5.JS 手繪和碼繪兩種方式“運動”主題作品的對比研究
這次作業我針對的主題是“斐波那契螺旋線”
背景知識:斐波那契螺旋線,也稱“黃金螺旋”,是根據斐波那契數列畫出來的螺旋曲線,自然界中存在許多斐波那契螺旋線的圖案,是自然界最完美的經典黃金比例。作圖規則是在以斐波那契數為邊的正方形拼成的長方形中畫一個90度的扇形,連起來的弧線就是斐波那契螺旋線。在這
fastDFS+LibreOffice多檔案上傳(二)後端部分:檔案資訊轉json字串儲存資料庫(Gson和org.json兩種方式)
需要注意的地方:
1)如果你複製我的程式碼到你的程式上報錯,可以看看我第一篇文章實體類跟配置檔案的設定:https://blog.csdn.net/qq_36688143/article/details/84162924
第二篇檔案上傳前端頁面的程式碼:
https://blog.c
智聯招聘抓取---scrapy框架和requests庫兩種方式實現
#首先分析目標站點,分析得出結果是在json接口裡,然後抓取企業資訊需要再次請求頁面進行抓取
#1.直接requests請求進行抓取儲存
##需要注意點:
可能不同企業單頁排版不一樣,需要判斷採取不同形式
儲存為csv檔案注意格式,保證資料表格不換行需要新增
ubuntu 安裝redis兩種方式 教程
方式一:
下載地址:http://redis.io/download,下載最新文件版本。
本教程使用的最新文件版本為 2.8.17,下載並安裝:
$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz
$ tar xzf
獲取後臺資料使用JQ-AJAX 和 Vue-Axios 兩種方式的使用對比
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content=
遞迴和迭代兩種方式實現歸併排序(Java版)
遞迴版
package MergeSort;
import Utils.SortUtils;
/**
* 歸併排序遞迴版
* @author liguodong
*/
pub
基於陣列和連結串列兩種方式實現棧
棧是一種先進後出的資料結構,在實際程式設計棧有很廣泛的用處,Java棧已經幫我們實現好了stack類。
實現棧的兩種方式,基於陣列實現和基於連結串列實現。
1.stack介面
public interface StackADT {
//入棧操作
public voi
手繪和碼繪兩種方式創作“運動”主題
藝術的展現形式有多種多樣,繪畫的方式也有很多。這篇文章主要來比較一下手繪與碼繪。
什麼是碼繪?用程式語言即程式碼來畫畫。一般人更多接觸到的是手繪,只有從事或研究相關方面的才會比較瞭解碼繪。聽說現在的藝術生都要學點程式設計呢。
上面兩張就是用processing作的
SpringMvc 上傳excel(註解和非註解兩種方式)
1、第一種方式:
A:JSP頁面:
<form name="importForm" action="${ctx }/service/userService/BatchImport.do" method="post" enctype="multipar
用陣列和連結串列兩種方式實現佇列
手寫陣列實現佇列
1 int queue[20];
2 int front,rear;
3
4 void clear()
5 {
6 front = rear = -1;
7 }
8
9 int size()
10 {
11 return (rear-front)
Linux(CentOS)安裝Node.JS和npm的兩種方式(yum安裝和原始碼安裝)
宣告版本: Linux版本:CentOS release 6.9 / 64位
yum安裝
yum安裝是將yum源中的rpm包下載到本地,安裝這個rpm包。這個rpm包是別人編譯安裝好的二進位制包。這種方式方便快捷,特別是不用考慮包依賴。
0、
通過JVM記憶體模型深入理解值傳遞和引用傳遞兩種方式
值傳遞和引用傳遞分析Java中資料型別分為兩大類:基本型別和引用型別(也就是物件型別)。基本型別:boolean、char、byte、short、int、long、float、double引用型別:類、介面、陣列因此,變數型別也可分為兩大類:基本型別和引用型別。在分析值傳遞
Oracle資料庫的匯入和匯出的兩種方式
首先,我們匯入匯出資料,肯定是要通過oracle自帶的可執行程式來完成資料的匯入匯出工作,imp.exe 和exp.exe這兩個可執行檔案都放在oracle安裝目錄下的BIN目錄下。
1.以cmd命令操作符匯入匯出
先以cmd命令操作符來演示,比如我的B
Android ScrollView監聽滑動到頂部和底部的兩種方式
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ScrollView;
/**
* 監聽ScrollView滾動到頂部或者底部做相關事件攔截
*/
public class S
ubuntu 安裝redis兩種方式
本教程使用的最新文件版本為 2.8.17,下載並安裝:
$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz
$ tar xzf redis-2.8.17.tar.gz
$ cd redis-2.8.17
C++使用迭代和遞迴兩種方式實現連結串列逆序演算法
1.連結串列逆序的兩種演算法
C++實現一個連結串列逆序演算法
2.連結串列逆序演算法實現原理
如A->B->C->D->E,一般會有以下兩種思路,如下
思路1:
先取出連結串列的最後一個E,然後將E作為新連結串列的頭,
現在狀