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.gz3.4. 安裝到指定目錄(這個目錄自己決定,如/usr/local/redis)
cd /usr/local/redis-3.2.8.tar.gz
3.5. 拷貝配置檔案到安裝目錄下
進入原始碼目錄,裡面有一份配置檔案 redis.conf,然後將其拷貝到安裝路徑下
cd /usr/local/redis
cp /usr/local/redis-3.2.8/redis.conf /usr/local/redis/bin3.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();
}
}
}