Redis的安裝及在Java中的使用

Redis的安裝及在Java中的使用

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

Redis是一個開源的使用ANSI C語言編寫、遵守BSD協(xié)議、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API。

它通常被稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器,因?yàn)橹担╲alue)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等類型。

Redis 優(yōu)勢

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

豐富的數(shù)據(jù)類型 – Redis支持二進(jìn)制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數(shù)據(jù)類型操作。

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

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

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

Redis有著更為復(fù)雜的數(shù)據(jù)結(jié)構(gòu)并且提供對他們的原子性操作,這是一個不同于其他數(shù)據(jù)庫的進(jìn)化路徑。Redis的數(shù)據(jù)類型都是基于基本數(shù)據(jù)結(jié)構(gòu)的同時對程序員透明,無需進(jìn)行額外的抽象。

Redis運(yùn)行在內(nèi)存中但是可以持久化到磁盤,所以在對不同數(shù)據(jù)集進(jìn)行高速讀寫時需要權(quán)衡內(nèi)存,因?yàn)閿?shù)據(jù)量不能大于硬件內(nèi)存。在內(nèi)存數(shù)據(jù)庫方面的另一個優(yōu)點(diǎn)是,相比在磁盤上相同的復(fù)雜的數(shù)據(jù)結(jié)構(gòu),在內(nèi)存中操作起來非常簡單,這樣Redis可以做很多內(nèi)部復(fù)雜性很強(qiáng)的事情。同時,在磁盤格式方面他們是緊湊的以追加的方式產(chǎn)生的,因?yàn)樗麄儾⒉恍枰M(jìn)行隨機(jī)訪問。

安裝Redis

Window 下安裝

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

Redis 支持 32 位和 64 位。這個需要根據(jù)你系統(tǒng)平臺的實(shí)際情況選擇,這里我們下載 Redis-x64-xxx.zip壓縮包到 C 盤,解壓后,將文件夾重新命名為 redis。

打開一個 cmd 窗口 使用 cd 命令切換目錄到 C:\redis 運(yùn)行:

redis-server.exe redis.windows.conf

如果想方便的話,可以把 redis 的路徑加到系統(tǒng)的環(huán)境變量里,這樣就無需再輸路徑了,后面的那個 redis.windows.conf 可以省略,如果省略,會啟用默認(rèn)的。

這時候另啟一個 cmd 窗口,原來的不要關(guān)閉,不然就無法訪問服務(wù)端了。

切換到 redis 目錄下運(yùn)行:

redis-cli.exe -h 127.0.0.1 -p 6379

測試一下。設(shè)置鍵值對:

set myKey abc

取出鍵值對:

get myKey

Ubuntu下安裝

在 Ubuntu 系統(tǒng)安裝 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 是本機(jī) IP ,6379 是 redis 服務(wù)端口。現(xiàn)在我們輸入 PING 命令。

redis 127.0.0.1:6379> ping
PONG

以上說明我們已經(jīng)成功安裝了redis。

在Java中使用Redis

在maven項(xiàng)目中添加以下依賴:

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

連接到 redis 服務(wù)

import redis.clients.jedis.Jedis;
 
public class RedisJava {
    public static void main(String[] args) {
        //連接本地的 Redis 服務(wù)
        Jedis jedis = new Jedis("localhost");
        System.out.println("連接成功");
        //查看服務(wù)是否運(yùn)行
        System.out.println("服務(wù)正在運(yùn)行: "+jedis.ping());
    }
}

編譯運(yùn)行以上Java程序:

連接成功
服務(wù)正在運(yùn)行: PONG

Redis Java String(字符串) 實(shí)例

 //設(shè)置 redis 字符串?dāng)?shù)據(jù)
    jedis.set("ccbkey", "www.ccb.com");
    System.out.println("ccbkey存儲的字符串為: " + jedis.get("ccbkey"));

運(yùn)行結(jié)果:

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

Redis Java List(列表) 實(shí)例

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

運(yùn)行結(jié)果:

列表項(xiàng)為: Taobao
列表項(xiàng)為: Google
列表項(xiàng)為: CCB

Redis Java Keys 實(shí)例

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

運(yùn)行結(jié)果:

鍵為site-list
鍵為ccbkey
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容