Redis

Redis實作

詹國忠 2015/12/30 11:00:00
301







主題

Redis實作

文章簡介

Redis 是一個開放原始碼,一個進階的 key-value 儲存資料庫,他也參考了伺服器的資料資料結構,所以資料可以包含 字串(strings)hashes、清單(lists)、集合(sets)及有順序的集合 (sorted sets)且將資料存放在記憶體中,以提升讀取的效率。

作者:

Spike

版本/產出日期:

V1.0/2015.12.25




1. 前言

由於近幾年來Web 2.0網站與社群網站盛行,於是開始出現採用如NoSQL資料庫方案,解決網站的資料流量急速增漲的問題,並且NoSQL資料庫具備水平擴充能力,只要增加新的伺服器節點,就能夠不斷擴充。

Redis是近年來出現NoSQL開源資料庫的一種,並且將資料存放在記憶體中,以提升讀取的效率。




2. 目的

Key-Value Store是當下比較流行的話題,尤其在構建諸如搜尋引擎、IM、P2P、遊戲伺服器、SNS等大型互聯網應用以及提供雲計算服務的時候,怎樣保證系統在海量資料環境下的高性能、高可靠性、高擴展性、高可用性、低成本成為所有系統架構們挖苦心思考慮的重點,而怎樣解決資料庫伺服器的性能瓶頸是最大的挑戰。

而Key-Value Store更加注重對海量資料存取的性能、分散式、擴展性支援上,並不需要傳統關聯式資料庫的一些特徵,例如:Schema、事務、完整SQL查詢支援等等,因此在分散式環境下的性能相對于傳統的關聯式資料庫有較大的提升。

















3. 安裝Redis

Redis是開放原始碼的軟體,因此可以直接到Redis的官方網站找到原始碼自行編譯安裝。

http://redis.io/

如果是基於Ubuntu 14.04之後的Linux發行版,可以直接使用apt-get來下載安裝Redis Server,指令如下:

sudo apt-get install redis-server

安裝完後,Redis Server Service應該就已經被自動開啟。此時可以輸入以下指令來連入本機的Redis Server:

redis-cli

如果要手動啟動、重啟、關閉Redis Server,可以使用以下幾個指令來完成:

sudo service redis-server start

sudo service redis-server restart

sudo service redis-server stop

Redis Server的設定檔放在「/etc/redis/redis.conf」中,可以使用如以下指令以文字編輯器開啟並編輯。

sudo pluma /etc/redis/redis.conf

Redis Server的設定檔比較需要注意修改的地方有以下三處:

port:連結到Redis Server所通過的連接埠。預設為6379,如果有跟其他服務衝突到,應該要修改掉。

bind:連結到Redis Server所使用的網路介面。預設為127.0.0.1,也就是內部迴圈(lo),僅本機可以直接連接。

requirepass:連結到此Redis Server所需的密碼。


設定檔修改後記得重新啟動Redis Server來套用新設定。

redis-cli若能連接Redis Server,可以下達簡單的存取指令測試資料庫是否正常運作。

set foo bar

get foo























4. Java 使用 Redis

4.1、 安裝

開始在 Java 中使用 Redis 前, 我們需要確保已經安裝了 redis 服務及 Java redis 驅動,且你的機器上能正常使用 Java。 Java的安裝配置可以參考我們的 Java開發環境配置 接下來讓我們安裝 Java redis 驅動

首先你需要下載驅動包,下載 jedis.jar,確保下載最新驅動包。

在你的classpath中包含該驅動包。


4.2、 連接到 redis

編譯以Java程式,確保驅動包的路徑是正確的。

import redis.clients.jedis.Jedis;

public class RedisJava {

public static void main(String[] args) {

//連接本地的 Redis 服務

Jedis jedis = new Jedis("localhost");

System.out.println("Connection to server sucessfully");

//查看服務是否運行

System.out.println("Server is running: "+jedis.ping());

}

}


$javac RedisJava.java

$java RedisJava

Connection to server sucessfully

Server is running: PONG


Redis Java String Example


4.3、 Redis Java String(字串) 實例

import redis.clients.jedis.Jedis;

public class RedisStringJava {

public static void main(String[] args) {

//連接本地的 Redis 服務

Jedis jedis = new Jedis("localhost");

System.out.println("Connection to server sucessfully");

//設置 redis 字串資料

jedis.set("w3ckey", "Redis tutorial");

// 獲取存儲的資料並輸出

System.out.println("Stored string in redis:: "+ jedis.get("w3ckey"));

}

}

編譯以上程式。

$javac RedisStringJava.java

$java RedisStringJava

Connection to server sucessfully

Stored string in redis:: Redis tutorial


4.4、 Redis Java List(清單) 實例

import redis.clients.jedis.Jedis;

public class RedisListJava {

public static void main(String[] args) {

//連接本地的 Redis 服務

Jedis jedis = new Jedis("localhost");

System.out.println("Connection to server sucessfully");

//存儲資料到清單中

jedis.lpush("tutorial-list", "Redis");

jedis.lpush("tutorial-list", "Mongodb");

jedis.lpush("tutorial-list", "Mysql");

// 獲取存儲的資料並輸出

List<String> list = jedis.lrange("tutorial-list", 0 ,5);

for(int i=0; i<list.size(); i++) {

System.out.println("Stored string in redis:: "+list.get(i));

}

}

}

編譯以上程式。

$javac RedisListJava.java

$java RedisListJava

Connection to server sucessfully

Stored string in redis:: Redis

Stored string in redis:: Mongodb

Stored string in redis:: Mysql


4.5、 Redis Java Keys 實例

import redis.clients.jedis.Jedis;

public class RedisKeyJava {

public static void main(String[] args) {

//連接本地的 Redis 服務

Jedis jedis = new Jedis("localhost");

System.out.println("Connection to server sucessfully");

// 獲取資料並輸出

List<String> list = jedis.keys("*");

for(int i=0; i<list.size(); i++) {

System.out.println("List of stored keys:: "+list.get(i));

}

}

}

編譯以上程式。

$javac RedisKeyJava.java

$java RedisKeyJava

Connection to server sucessfully

List of stored keys:: tutorial-name

List of stored keys:: tutorial-list




5. 參考來源

Java 使用 Redis-

http://www.runoob.com/redis/redis-java.html

開源資料庫Redis實戰經驗-

http://www.ithome.com.tw/news/96109

Redis快速入门:安装、配置和操作-http://tech.it168.com/a2011/0830/1239/000001239923_all.shtml

Ubuntu如何架設Redis Server並且與PHP一同使用-

http://magiclen.org/ubuntu-redis-php/

Redis介紹-http://kejyun.github.io/Laravel-4-Documentation-Traditional-Chinese/docs/redis/

詹國忠