Redis的安裝及在Java中的使用

weixin_33807284發表於2019-02-01

Redis的安裝及在Java中的使用

REmote DIctionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-value儲存系統。

Redis是一個開源的使用ANSI C語言編寫、遵守BSD協議、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。

它通常被稱為資料結構伺服器,因為值(value)可以是 字串(String), 雜湊(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等型別。

Redis 優勢

效能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。

豐富的資料型別 – Redis支援二進位制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 資料型別操作。

原子 – Redis的所有操作都是原子性的,意思就是要麼成功執行要麼失敗完全不執行。單個操作是原子性的。多個操作也支援事務,即原子性,通過MULTI和EXEC指令包起來。

豐富的特性 – Redis還支援 publish/subscribe, 通知, key 過期等等特性。

Redis與其他key-value儲存有什麼不同?

Redis有著更為複雜的資料結構並且提供對他們的原子性操作,這是一個不同於其他資料庫的進化路徑。Redis的資料型別都是基於基本資料結構的同時對程式設計師透明,無需進行額外的抽象。

Redis執行在記憶體中但是可以持久化到磁碟,所以在對不同資料集進行高速讀寫時需要權衡記憶體,因為資料量不能大於硬體記憶體。在記憶體資料庫方面的另一個優點是,相比在磁碟上相同的複雜的資料結構,在記憶體中操作起來非常簡單,這樣Redis可以做很多內部複雜性很強的事情。同時,在磁碟格式方面他們是緊湊的以追加的方式產生的,因為他們並不需要進行隨機訪問。

安裝Redis

Window 下安裝

下載地址:https://github.com/MicrosoftArchive/redis/releases

Redis 支援 32 位和 64 位。這個需要根據你係統平臺的實際情況選擇,這裡我們下載 Redis-x64-xxx.zip壓縮包到 C 盤,解壓後,將資料夾重新命名為 redis。

開啟一個 cmd 視窗 使用 cd 命令切換目錄到 C:\redis 執行:

redis-server.exe redis.windows.conf

如果想方便的話,可以把 redis 的路徑加到系統的環境變數裡,這樣就無需再輸路徑了,後面的那個 redis.windows.conf 可以省略,如果省略,會啟用預設的。

這時候另啟一個 cmd 視窗,原來的不要關閉,不然就無法訪問服務端了。

切換到 redis 目錄下執行:

redis-cli.exe -h 127.0.0.1 -p 6379

測試一下。設定鍵值對:

set myKey abc

取出鍵值對:

get myKey

Ubuntu下安裝

在 Ubuntu 系統安裝 Redis 可以使用以下命令:

$sudo apt-get update
$sudo apt-get install redis-server

啟動 Redis

$ redis-server

檢視 redis 是否啟動?

$ redis-cli

以上命令將開啟以下終端:

redis 127.0.0.1:6379>

127.0.0.1 是本機 IP ,6379 是 redis 服務埠。現在我們輸入 PING 命令。

redis 127.0.0.1:6379> ping
PONG

以上說明我們已經成功安裝了redis。

在Java中使用Redis

在maven專案中新增以下依賴:

<dependencies>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.0.0</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
</dependencies>

連線到 redis 服務

import redis.clients.jedis.Jedis;
 
public class RedisJava {
    public static void main(String[] args) {
        //連線本地的 Redis 服務
        Jedis jedis = new Jedis("localhost");
        System.out.println("連線成功");
        //檢視服務是否執行
        System.out.println("服務正在執行: "+jedis.ping());
    }
}

編譯執行以上Java程式:

連線成功
服務正在執行: PONG

Redis Java String(字串) 例項

 //設定 redis 字串資料
    jedis.set("ccbkey", "www.ccb.com");
    System.out.println("ccbkey儲存的字串為: " + jedis.get("ccbkey"));

執行結果:

ccbkey儲存的字串為: www.ccb.com

Redis Java List(列表) 例項

//儲存資料到列表中
jedis.lpush("site-list", "CCB");
jedis.lpush("site-list", "Google");
jedis.lpush("site-list", "Taobao");
// 獲取儲存的資料並輸出
List<String> list = jedis.lrange("site-list", 0, 2);
for (int i = 0; i < list.size(); i++) {
    System.out.println("列表項為: " + list.get(i));
}

執行結果:

列表項為: Taobao
列表項為: Google
列表項為: CCB

Redis Java Keys 例項

// 獲取所有鍵並輸出
Set<String> keys = jedis.keys("*");
Iterator<String> it = keys.iterator();
while (it.hasNext()) {
    String key = it.next();
    System.out.println("鍵為"+key);
}

執行結果:

鍵為site-list
鍵為ccbkey

相關文章