1. 程式人生 > >centOS 7下搭建Redis伺服器,並使用Java訪問操作Redis

centOS 7下搭建Redis伺服器,並使用Java訪問操作Redis

1.  什麼是redis

             Redis是用C語言開發的一個開源的高效能鍵值對(key-value)資料庫。它通過提供多種鍵值資料型別來適應不同場景下的儲存需求,目前為止Redis支援的鍵值資料型別如下:

        字串型別

        雜湊型別

        列表型別

        集合型別

        有序集合型別。

2.  redis的應用場景

        快取(資料查詢、短連線、新聞內容、商品內容等等)。(最多使用)

        分散式叢集架構中的session分離。

        聊天室的線上好友列表。

        任務佇列。(秒殺、搶購、12306等等)

        應用排行榜。

        網站訪問統計。

        資料過期處理(可以精確到毫秒)

3.  Redis的安裝

        redis是C語言開發,建議在linux上執行,本教程使用Centos7.0作為安裝環境。安裝redis需要先將官網下載的原始碼進行編譯,編譯依賴gcc環境,如果沒有gcc環境,需要安裝gcc:yum install gcc-c++

3.1.  版本說明

   本教程使用redis3.2.8版本。3.2.8版本主要增加了redis叢集功能。 

3.2.  原始碼下載

    從官網下載:https://redis.io/

    將redis-3.2.8.tar.gz拷貝到/usr/local下

3.3.  解壓原始碼

    tar -zxvf redis-3.2.8.tar.gz

3.4.  安裝到指定目錄(這個目錄自己決定,如/usr/local/redis)

    cd /usr/local/redis-3.2.8.tar.gz

    make PREFIX=/usr/local/redis install

3.5.  拷貝配置檔案到安裝目錄下

    進入原始碼目錄,裡面有一份配置檔案 redis.conf,然後將其拷貝到安裝路徑下

    cd /usr/local/redis

    cp /usr/local/redis-3.2.8/redis.conf  /usr/local/redis/bin

3.6.  安裝完後bin目錄下的檔案列表

      

3.7.  各個檔案的作用如下

    

   至此,redis伺服器就已經安裝完畢。

4.  Redis的啟動

4.1.  前端模式啟動

    直接執行bin/redis-server將以前端模式啟動,前端模式啟動的缺點是ssh命令視窗關閉則redis-server程式結束,不推薦使用此方法。如下圖:

       

4.2.  後端模式啟動

    修改redis.conf配置檔案, daemonize yes 以後端模式啟動。  

    執行如下命令啟動redis:

   cd /usr/local/redis

   ./bin/redis-server ./bin/redis.conf

   bin/redis-cli

   

     redis預設的埠號為6379,可以在redis.conf中配置。

5.  通過jedis連線redis單機

5.1.  jar包

pom座標:

<dependency>

      <groupId>redis.clients</groupId>

      <artifactId>jedis</artifactId>

      <version>2.7.0</version>

</dependency>

jar包如下:


5.2.  單例項連線

通過建立單例項jedis物件連線redis服務,如下程式碼:

//單例項連線redis

@Test

public void testJedisSingle() {

Jedis jedis = new Jedis("192.168.93.130", 6379);

jedis.set("name","daixiaoyong");

String name = jedis.get("name");

System.out.println(name);

jedis.close();

}

5.3   外部連線不上redis的解決方法

由於linux防火牆預設開啟,redis的服務埠6379並不在開放規則之內,所有需要將此埠開放訪問。

firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload

5.4.  使用連線池連線

         通過單例項連線redis不能對redis連線進行共享,可以使用連線池對redis連線進行共享,提高資源利用率,使用jedisPool連線redis服務,如下程式碼:

@Test

publicvoid pool() {

JedisPoolConfig config = newJedisPoolConfig();

//最大連線數

config.setMaxTotal(30);

//最大連線空閒數

config.setMaxIdle(2);      

JedisPool pool = newJedisPool(config,"192.168.101.3", 6379);

Jedis jedis = null;

try{

jedis = pool.getResource();

jedis.set("name","lisi");

String name = jedis.get("name");

System.out.println(name);

}catch(Exception ex){

ex.printStackTrace();

}finally{

if(jedis !=null){

//關閉連線

jedis.close();

}

}

}