1. 程式人生 > >Java中使用Redis(jedis連線池連線redis/spring整合redis)

Java中使用Redis(jedis連線池連線redis/spring整合redis)

開始在 Java 中使用 Redis 前, 我們需要確保已經安裝了 redis 服務及 Java redis 驅動
1、下載最新驅動包:https://mvnrepository.com/artifact/redis.clients/jedis;
jedis-2.9.0.jar;commons-pool2-2.4.2.jar;(Apache連線池)
2、將jar包放入lib中
3、import redis.clients.jedis.Jedis;
4、//連線本地的 Redis 服務

Jedis jedis = new Jedis("localhost");


一、使用jedis連線池連線redis

1、配置檔案.properties


2、連線類

    private static JedisPool pool; 
    //靜態程式碼初始化池配置    
    static {    
    try{   
    Properties props = new Properties();  
            props.load(RedisTest.class.getClassLoader().getResourceAsStream("redis.properties"
));  
            //建立jedis池配置例項    
            JedisPoolConfig config = new JedisPoolConfig();     
            //設定池配置項值       
            config.setMaxTotal(Integer.valueOf(props.getProperty("jedis.pool.maxActive")));      
            config.setMaxIdle(Integer.valueOf(props.getProperty("jedis.pool.maxIdle")));      
            config.setMaxWaitMillis(Long.valueOf(props.getProperty("jedis.pool.maxWait")));      
            config.setTestOnBorrow(Boolean.valueOf(props.getProperty("jedis.pool.testOnBorrow")));      
            config.setTestOnReturn(Boolean.valueOf(props.getProperty("jedis.pool.testOnReturn")));      
            //根據配置例項化jedis池    
            pool = new JedisPool(config, props.getProperty("redis.ip"), Integer.valueOf(props.getProperty("redis.port")));
  
    }catch (IOException e) {  
    e.printStackTrace();  
    }  
    }
    /**獲得jedis物件*/  
    public static Jedis getJedisObject(){  
    return pool.getResource();  
    }  
    /**歸還jedis物件*/  
    public static void recycleJedisOjbect(Jedis jedis){  
    pool.returnResource(jedis);    
    }
3、實現類
    Jedis jedis = getJedisObject();//獲得jedis例項                    
    //獲取jedis例項後可以對redis服務進行一系列的操作     
    System.out.println(jedis.get("runoobkey"));     

    recycleJedisOjbect(jedis); //將 獲取的jedis例項物件還回遲中

二、spring整合redis

1、下載spring-data-redis-***.RELEASE.jar spring-data-commons-***.RELEASE.jar 包  aopalliance-1.0 .jar

(版本不同將會導致不相容問題,常常會出現NoSuchMethodError異常,我使用spring-data-redis-1.8.7.RELEASE.jar、spring-data-commons-1.8.4.RELEASE.jar,spring使用4.3.12)  

下載地址:https://repo.spring.io
Artifact——libs-release-local——org——springframework——data——spring-data-redis
2、工作目錄下建立配置檔案redis.properties(配置見上圖)
3、修改spring配置檔案applicationContext.xml
<!--   引入多個配置檔案 -->  
<bean id="configurer"  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">    
<property name="locations">  
<list> 
<value>classpath:redis.properties</value>  
</list>    
</property>   
</bean>  
  
 <!-- jedis pool配置 -->   
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">    
<!--最大連線數 -->
<property name="maxTotal" value="${jedis.pool.maxActive}" />
<!--最大空閒連線數 -->
<property name="maxIdle" value="${jedis.pool.maxIdle}" />
<!--最大等待時間 -->
<property name="maxWaitMillis" value="${jedis.pool.maxWait}" />
<!--定時對執行緒池中空閒的連結進行validateObject校驗 -->
<property name="testWhileIdle" value="true" /> 
<property name="testOnBorrow" value="true" />
<!--在進行returnObject對返回的connection進行validateObject校驗 -->
<property name="testOnReturn" value="true" />   
</bean>

<bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">    
<property name="hostName" value="${redis.ip}" />    
<property name="port" value="${redis.port}" />     
<constructor-arg index="0" ref="poolConfig" />  
</bean>

<!--  redis模板類 -->
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">   
<property name="connectionFactory"   ref="connectionFactory" />   
<property name="keySerializer">   
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />   
</property>      
<property name="valueSerializer">   
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />  
</property>   
<property name="hashKeySerializer">     
  <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>     
</property>   
<property name="hashValueSerializer">   
  <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>     
</property> 
 </bean>


<!--自定義redis工具類,在需要快取的地方注入此類  -->  
<bean id="redisUtil" class="com.util.RedisTemplateUtil">  
<property name="redisTemplate" ref="redisTemplate" />  
</bean>
5、使用
ApplicationContext context=new ClassPathXmlApplicationContext("classpath:config/spring-dao.xml");  
RedisTemplateUtil redisUtil=(RedisTemplateUtil) context.getBean("redisUtil");  
redisUtil.set("age", "888");

System.out.println(redisUtil.get("age"));


三、redis哨兵配置

1、redis.properties檔案新增


2、spring配置檔案.xml修改


相關推薦

JAVAOOAD面向物件分析與設計依賴倒置原則程式碼例項

簡介:什麼是依賴倒置原則? 軟體設計中,多層次之間相互依賴關係需要倒置為抽象類或介面,而不是直接依賴於具體的實現。 具體表現為: 1、上層模組不應該直接依賴下層實現,而應該依賴下層的抽象 2、每一個單獨的層次,抽象不應該依賴於細節,而細節應該依賴於抽象。 現在有一個使用者類UserBea

Java使用Redisjedis連線連線redis/spring整合redis

開始在 Java 中使用 Redis 前, 我們需要確保已經安裝了 redis 服務及 Java redis 驅動1、下載最新驅動包:https://mvnrepository.com/artifact/redis.clients/jedis;jedis-2.9.0.jar;

NoSQL之redisJedis連線 API

工程搭建:     (1)介紹:redis不僅使用命令可以操作,現在基本上主流的語言都有客戶端支援,比如:java、C、C#、C++、php、Node.js、Go等。       

連線資料庫java驅動連線連線連線

使用java驅動連線資料庫:        String url ="jdbc:mysql://localhost:3306/zhongruan";        String usernam

使用JAVA的動態代理實現資料庫連線

資料庫連線池在編寫應用服務是經常需要用到的模組,太過頻繁的連線資料庫對服務效能來講是一個瓶頸,使用緩衝池技術可以來消除這個瓶頸。我們可以在網際網路上找到很多關於資料庫連線池的源程式,但是都發現這樣一個共同的問題:這些連線池的實現方法都不同程度地增加了與使用者之間的耦合度。很多

JDBC資料庫連線連線資料庫及資料庫操作DAO層設計通用更新及查詢方法

上篇文章主要介紹了通過資料庫連線池連線資料庫,然後設計了對資料庫通用更新和查詢方法,本篇文章主要通過例項介紹上篇文章定義的對資料庫操作的幾個方法的使用:     首先我們先在資料庫建立一個學生資訊表Student欄位如圖: 建立好表將配置檔案的資訊改好然後需要建立一

JDBC資料庫連線連線資料庫及資料庫操作DAO層設計通用更新及查詢方法

該篇文章介紹了資料庫連線池獲取資料庫連線以及資料庫操作的基本使用,然後主要提供了java專案案例中dao層的一種設計,利用反射的原理定義了通用的查詢方法可以對應所有的表和例項。文章中的每段程式碼都提供了詳細的註釋及邏輯步驟 首先匯入資料庫連線的所需要的jar包:    

java常見的執行緒不看後悔,一看必懂

Executor介面表示執行緒池,它的execute(Runnable task)方法用來執行Runnable型別的任務,ExecutorService是Executor的子介面,聲明瞭管理執行緒池的一些方法 Java.util.concurrent.Executors類包含了一些靜態

初識Java的四大執行緒和ThreadPoolExecutor的使用歡迎指正

初識Java中的四大執行緒池和ThreadPoolExecutor的使用(轉載+自身心得) 為什麼用執行緒池? 1.建立/銷燬執行緒伴隨著系統開銷,過於頻繁的建立/銷燬執行緒,會很大程度上影響處-理效率; 2.執行緒併發數量過多,搶佔系統資源從而導致阻塞; 3.對執行緒進行一些簡單的

Spring學習Jdbc連線交個spring管理和事務操作

一、連線池的配置交給Spring管理 1,新增jar包 2,spring的jdbc連線池配置 <!-- 配置連線池 --> <bean id="dataSource" class="org.spring

Java Web開發7___通過資料庫連線連線MySQL 資料庫

本博文 給出一個使用資料庫連線池的例子, 將使用webdb 資料來源 獲取一個MySQL 資料庫連線,並查詢其中的t_dirctionary表, 最後將查詢結果顯示在客戶端瀏覽器。 以下ViewDictionary 類 演示了怎麼樣 使用資料庫連線池獲取資料庫連線, 程式碼如下: i

redis JAVA客戶端Jedis測試使用

一、jedis連線(maven專案) package redis; import net.sf.json.JSONObject; import redis.clients.jedis.Jedis; import redis.clients.jedis.J

java如何通過JDBC的方式連線sqlserver2005多例項資料庫?

java語言中,通過jdbc訪問sqlserver2005資料庫預設例項可以按正常的寫法來建立url連線,程式碼如下: Connection cn = DriverManager.getConnection("jdbc:sqlserver://172.16.5.2:1433;

Redis 安裝和Java使用

Redis是個記憶體資料庫,同時它是單執行緒的。 Redis支援資料的持久化,可以將記憶體中的資料儲存在磁碟中,重啟的時候可以再次載入進行使用。 Redis不僅僅支援簡單的key-value型別的資料,同時還提供list,set,zset,hash等資料

Maven專案redisjedis)的配置和使用

上一篇部落格簡單闡述java遠端連線redis遇到的問題,這一篇部落格詳細闡述遠端連線redis的相關配置。 要想在Java中連線Redis,並進行操作,由兩種方式,一種是spring data redis,它是由spring整合的,不支援叢集,一種是官方推薦

Weblogic連線屬性PinnedToThread 導致連線連線不斷增長

最近專案遇到棘手的問題,weblogic連線池不斷增長導致連線爆滿。 後來經過仔細查詢發現weblogic連線池設定勾選了PinnedToThread 屬性導致的,下面先看下官方對這個屬性的介紹吧: PinnedToThread 是一個能夠改善效能的選項,它啟用執行執行緒

Redis學習之java程式碼實現Jedis

前面兩篇說過redis的安裝使用和密碼設定後,現在來看看怎麼用java程式碼連線伺服器,並使用redis。 首先專案中需要有redis的驅動包,下載Jedis.jar。 下載最新驅動包,放到專案的lib目錄下,確保專案包含該驅動包。 如果是maven專案,可以直接在pom

JavalongLong與intInteger之間的轉換

轉化 string long tar str 基礎數據類型 ava detail 參考 一、將long型轉化為int型,這裏的long型是基礎類型: long a = 10; int b = (int)a; 二、將Long型轉換為int型,這裏

java異常Exception的定義,意義和用法。舉例

use 詳情 put 視頻下載 ati itl url index ring 1.異常(Exception)的定義,意義和用法 (視頻下載) (全部書籍) 我們先給出一個例子,看看異常有什麽用? 例:1.1-本章源碼 public class Test { publi

java介面interface及使用方法和注意事項

1、介面:一種把類抽象的更徹底,接口裡只能包含抽象方法的“特殊類”。介面不關心類的內部狀態資料,定義的是一批類所遵守的規範。(它只規定這批類裡必須提供某些方法,提供這些方法就可以滿足實際要求)。 在JAVA程式語言中是一個抽象型別,是抽象方法的集合,介面通常以interface來宣告。一個類通過