redis系列(一)- 安裝與啟動


https://blog.csdn.net/CSDN_LQR/article/details/78108587

redis系列文章: 
redis系列(一)- 安裝與啟動 
redis系列(二)- 語法與命令

 

一、Redis介紹

Redis是NoSql的一種,在弄清楚Redis是個什么玩意之前,先了解下NoSql是什么。

1、什么是NoSql

NoSql,全名:Not Only Sql,是一種非關系型數據庫,它不能替代關系弄數據庫,只是關系型數據庫的一個補充,是可以解決高並發、高可用、高擴展、大數據存儲等一系列問題而產生的數據庫解決方案。

NoSql有以下4種分類:鍵值(Key-Value)存儲數據庫、列存儲數據庫、文檔型數據庫、圖形(Graph)數據庫。而Redis屬於第一種:鍵值(Key-Value)存儲數據庫。

2、什么是Redis

Redis是使用c語言開發的一個高性能鍵值數據庫,即通過一些鍵值類型來存儲數據。Redis支持的鍵值類型有:String字符類型、map散列類型、list列表類型、set集合類型、sortedset有序集合類型。

redis的應用場景如下:緩存(數據查詢、短連接、新聞內容、商品內容等等)、分布式集群架構中的session分離、聊天室的在線好友列表、任務隊列。(秒殺、搶購、12306等等)、應用排行榜、網站訪問統計、數據過期處理(可以精確到毫秒)。其中,作為緩存的應用場景是最多的。

二、redis安裝

一般redis安裝於linux服務器,故本例介紹的是Linux下的安裝,如果你的電腦是window或mac,請自行百度安裝方法。

本例使用的Linux系統是CentOS6.7,諸如Ubuntu等Linux操作系統的操作命令或許存在個別差異,請自行學習了解。

1、下載

可以到redis的官網找到各個Redis版本的下載地址,如:http://download.redis.io/releases/redis-3.0.0.tar.gz

2、安裝

使用Xshell等服務器終端連接軟件連接上Linux后,進行以下操作:

1)下載壓縮Redis

下載redis:

wget http://download.redis.io/releases/redis-3.0.0.tar.gz
  • 1
  • 2

使用ll命令查看當前目錄下所有文件

可以看到redis-3.0.0.tar.gz就是剛剛下載的redis壓縮包,現在對其解壓:

tar -zxvf redis-3.0.0.tar.gz
  • 1
  • 2

再使用ll命令查看當前目錄下所有文件

2)編譯安裝Redis

進入redis源碼:

cd redis-3.0.0
  • 1
  • 2

通過ll命令可以看到Redis源碼目錄下的所有文件,接下來就需要對源碼進行編譯了:

make
  • 1
  • 2

使用make命令編譯Redis需要c語言環境,CentOS自帶c語言環境,若是使用其他Linux系統中沒有c語言環境,則需要安裝,如yum安裝: yum install gcc-c++

編譯過后,就是安裝了,安裝Redis的命令如下:

make install PREFIX=/usr/local/redis
  • 1
  • 2

該命令中,前面的”make install PREFIX=”是固定的,而”/usr/local/redis”是Redis的安裝目錄,一般就這么寫,如若需要安裝在其他地方,只需將此路徑更換即可。

最后,查看Redis是否安裝成功:

cd /usr/local/redis/
  • 1
  • 2

使用ll命令,可以看到bin文件夾,說明Redis已經安裝成功。

三、Redis啟動與停止

Redis有兩種啟動,分別是:前端啟動、后端啟動。要啟動Redis,就需要到Redis的bin目錄下執行啟動命令,先看看bin目錄結構:

1、前端啟動與停止

1)前端啟動的命令:

[root@localhost bin]# ./redis-server
  • 1
  • 2

可以看到Redis的啟動端口為6379(默認),進程id是5979,同時,前端啟動Redis后,終端將進入Redis控制台,沒辦法繼續別的Linux命令,即這個終端窗口就”廢了”,只能輸入Redis自己的命令。

2)前端啟動的關閉命令:

強制關閉:Ctrl+c
正常關閉:[root@localhost bin]# ./redis-cli shutdown
  • 1
  • 2
  • 3

下面對這兩個命令進行對比:

  • 強制關閉只需在Redis控制台直接執行即可(redis可能會丟失部分數據)。
  • 正常關閉需要另開一個終端窗口才可執行(redis不會丟失數據,推薦使用)。

需要注意一點,一旦前端啟動的關閉命令執行,則redis控制台關閉,redis服務也會停掉。

2、后端啟動與停止

后端啟動是我們開發中絕對會用到的方式,但在使用后端啟動命令之后,需要做如下幾步配置:

1)后端啟動的配置:

第一步,需要把redis源碼目錄下的redis.conf文件復制到redis安裝目錄的bin目錄下。

第二步,修改redis.conf文件,將daemonize的值改為yes后保存。

[root@localhost bin]# vim redis.conf 
  • 1
  • 2

Linux的vim編輯器指令請自行學習,這里就說vim中幾個最常用的指令:

i:進入編輯模式。

esc:退出編輯模式,進入瀏覽模式(進入vim編輯器,默認就是瀏覽模式)。

:wq:保存修改並退出vim編輯器。

經過上面幾步配置后,以后就無需再配置,下面就可以通過命令讓redis后台啟動了。

2)后端啟動的命令:

[root@localhost bin]# ./redis-server redis.conf
  • 1
  • 2

可以發現后端啟動命令就只是比前端啟動命令多了” redis.conf”,意思很明確,就是讓redis根據這個配置文件的配置運行罷了,同時也可以看到,在啟動完redis后台,終端不會進入redis控制台,這就是將redis運行后台了,我們可以查查看系統現在是不是有redis的進程:

[root@localhost bin]# ps -aux | grep redis
  • 1
  • 2

可以看到redis是運行着的,端口是6379,進程id是6087。

3)后端啟動的關閉命令:

強制關閉:[root@localhost bin]# kill -9 進程id
正常關閉:[root@localhost bin]# ./redis-cli shutdown
  • 1
  • 2
  • 3

因為后端啟動redis,沒辦法像前端啟動redis那樣直接ctrl+c強制關閉redis,如果需要強制關閉,那只能通過殺死進程的方式停止redis。而正常關閉redis的命令與前端關閉一樣,這里就不多說廢話。

項目中,建議使用正常關閉。因為redis作為緩存來使用的話,將數據存儲到內存中,如果使用正常關閉,則會將內存數據持久化到本地之后,再關閉。如果強制關閉,則不會進行持久化操作,可能會造成部分數據丟失。

四、Redis客戶端

1、redis自帶客戶端

在前面介紹redis安裝目錄下bin目錄的結構時,就已經標記出了redis的客戶端,它就是redis-cli。這個客戶端有兩個常用的功能:

  • 用來正常關閉redis服務。
  • 讓終端進入redis控制台(后台運行redis的場景下用到)。

1)啟動

啟動客戶端命令:

[root@localhost bin]# ./redis-cli -h 127.0.0.1 -p 6379
  • 1
  • 2
  • -h:指定訪問的redis服務器的ip地址
  • -p:指定訪問的redis服務器的port端口

如果使用的ip地址與端口都是默認的,則上述命令可以這么寫:

[root@localhost bin]# ./redis-cli
  • 1
  • 2

使用默認配置:默認的ip【127.0.0.1】,默認的port【6379】

2)關閉

ctrl+c
127.0.0.1:6379> quit
  • 1
  • 2
  • 3

要關閉該客戶端,使用上述兩個命令中任意一個均可,都不會影響redis數據的保存。

2、圖形界面客戶端

有一個redis的圖形界面客戶端軟件,名為redis-destop-manager。這是該軟件的下載頁面,支持Windows、Mac OS X、Linux,請根據自己的電腦系統選擇下載,這里以windows為例,簡單說下這軟件的使用,安裝很簡單,一路下一步即可,安裝后打開該應用。

1)打開redis服務器連接配置

2)添加redis服務器連接並測試是否成功連接

3)查看redis服務器中所有的數據庫

4)查看個別數據庫中的鍵值對數據

3、代碼控制客戶端

  redis不僅可以使用命令來操作,目前基本上主流的語言都有客戶端支持,比如:java、C、C#、C++、php、Node.js、Go等。

  在官方網站里有一些Java的客戶端,如:Jedis、Redisson、Jredis、JDBC-Redis等,其中官方推薦使用Jedis和Redisson。 在企業中用的最多的就是Jedis。 
Jedis托管在github上,點擊打開。

1)簡單的redis使用

第一步:導入以下2個jar包

  • jedis-2.7.0.jar
  • commons-pool2-2.3.jar

第二步:創建Jedis連接使用Redis服務器

@Test
public void jedisClient() {
    // 創建Jedis
    Jedis jedis = new Jedis("192.168.128.128", 6379);
    // 通過Jedis賦值
    jedis.set("s2", "222");
    // 通過Jedis取值
    String s2 = jedis.get("s2");
    System.out.println(s2);
    // 關閉Jedis
    jedis.close();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

第三步:改用Jedis連接池獲取Jedis

@Test
public void jedisPool() {
    // JedisPool
    JedisPool jedisPool = new JedisPool("192.168.128.128", 6379);
    // 通過連接池獲取jedis對象
    Jedis jedis = jedisPool.getResource();
    String s2 = jedis.get("s2");
    System.out.println(s2);
    // 關閉jedis客戶端
    jedis.close();
    // 關閉連接池
    jedisPool.close();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

2)Spring整合jedisPool

第一步:

  • 添加spring的jar包
  • 配置spring配置文件applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd "> <!-- 連接池配置 --> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <!-- 最大連接數 --> <property name="maxTotal" value="30" /> <!-- 最大空閑連接數 --> <property name="maxIdle" value="10" /> <!-- 每次釋放連接的最大數目 --> <property name="numTestsPerEvictionRun" value="1024" /> <!-- 釋放連接的掃描間隔(毫秒) --> <property name="timeBetweenEvictionRunsMillis" value="30000" /> <!-- 連接最小空閑時間 --> <property name="minEvictableIdleTimeMillis" value="1800000" /> <!-- 連接空閑多久后釋放, 當空閑時間>該值 且 空閑連接>最大空閑連接數 時直接釋放 --> <property name="softMinEvictableIdleTimeMillis" value="10000" /> <!-- 獲取連接時的最大等待毫秒數,小於零:阻塞不確定的時間,默認-1 --> <property name="maxWaitMillis" value="1500" /> <!-- 在獲取連接的時候檢查有效性, 默認false --> <property name="testOnBorrow" value="false" /> <!-- 在空閑時檢查有效性, 默認false --> <property name="testWhileIdle" value="true" /> <!-- 連接耗盡時是否阻塞, false報異常,ture阻塞直到超時, 默認true --> <property name="blockWhenExhausted" value="false" /> </bean> <!-- redis單機 通過連接池 --> <bean id="jedisPool" class="redis.clients.jedis.JedisPool" destroy-method="close"> <constructor-arg name="poolConfig" ref="jedisPoolConfig" /> <constructor-arg name="host" value="192.168.128.128" /> <constructor-arg name="port" value="6379" /> </bean> </beans> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

第二步:測試代碼

@Test
public void testJedisPool() {
    JedisPool pool = (JedisPool) applicationContext.getBean("jedisPool");
    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();
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

五、其他

1、redis數據庫數量配置

redis默認創建16個數據庫,如果需要修改數量庫的創建數量,可以修改redis.conf配置文件中databases的值為改變。

2、redis數據庫選擇

redis默認使用下標為0的數據庫,如若需要切換數據庫,可以在redis控制台中,使用”select 下標號”選擇數據庫。

127.0.0.1:6379> select 15
  • 1
  • 2

3、問題

如果你用Xshell之類的終端軟件無法連接服務器,請查看Linux系統是否開放22端口,可通過修改iptable攔截規則開放22端口,若是使用阿里雲服務器,則需要修改安全組規則,具體步驟網上一堆,請自己搜索學習修改。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM