Redis快速入門

第一章 簡(jiǎn)介

Redis是一個(gè)開源高性能鍵值數(shù)據(jù)庫。它通過提供多種鍵值數(shù)據(jù)類型類適應(yīng)不同場(chǎng)景下的存儲(chǔ)需求,并借助許多高層及的接口使其可以勝任如緩存,隊(duì)列系統(tǒng)等不同的角色。

1.1 存儲(chǔ)結(jié)構(gòu)

使用鍵值存儲(chǔ) ,key = value 。key 為鍵名, value是鍵值

支持的物種數(shù)據(jù)類型如下:

? 字符串類型

? 散列類型

? 列表類型

? 集合類型

? 有序集合類型

1.2 內(nèi)存存儲(chǔ)和持久化

Redis 數(shù)據(jù)庫的所有數(shù)據(jù)都存儲(chǔ)在內(nèi)存中。由于內(nèi)存的讀寫速度遠(yuǎn)高于硬盤,因此Redis在性能對(duì)比其他的基于硬盤存儲(chǔ)的數(shù)據(jù)庫有巨大優(yōu)勢(shì),Redis 可以在一秒內(nèi)讀寫超過十萬個(gè)鍵值。

將數(shù)據(jù)存放在內(nèi)存中也有問題,例如,程序退出后數(shù)據(jù)容易丟失。不過redis 對(duì)持久化做了處理,可以將數(shù)據(jù)存放到硬盤中。

1.3 Redis與memcached 的區(qū)別

2 網(wǎng)絡(luò)Io模型

Memcached 是多線程,非阻塞復(fù)用的網(wǎng)絡(luò)模型。Redis是單線程的IO復(fù)用模型,可以將速度優(yōu)勢(shì)發(fā)揮到最大,如果吞吐量過大,容易阻塞。

2 內(nèi)存管理

Memcached 采用預(yù)分配池的方式,Redis采用現(xiàn)場(chǎng)分配申請(qǐng)內(nèi)存的方式。

2 存儲(chǔ)方式

Memcached 基本只支持簡(jiǎn)單的key-value 存儲(chǔ),redis 出來支持key/value 外還支 list,set, sorted ,set , hash .

第二章 安裝

Redis 約定,次版本號(hào)為偶數(shù)的為穩(wěn)定版,為奇數(shù)的為不穩(wěn)定版。

2.1 Linux 安裝

安裝linux 系統(tǒng)過程略過,直奔主題,安裝Redis數(shù)據(jù)庫

2 下載軟件包

第一種:官網(wǎng)下載已經(jīng)編譯好的源碼包,官網(wǎng)地址redis.io

第二種:使用wget命令

Wget ?http://download.redis.io/redis-stable.tar.gz

2 tar -xvzf redis-stable.tar.gz

2 cd redis-stable

2 make

2 make install

Redis 沒有其他的外部依賴 ,安裝過程比較的簡(jiǎn)單,執(zhí)行make install 是為了將可執(zhí)行程序復(fù)制到/usr/local/bin 目錄下,以便于以后不用到安裝目錄就可以執(zhí)行程序。make test 命令請(qǐng)選擇性執(zhí)行。

2.2 Windows 安裝

聽說有windows版本但沒有用過

2.3 啟動(dòng)停止Redis

最常用的兩個(gè)程序:redis-server 和 redis-cli .

redis-server : 服務(wù)器, redis-cli 命令行客戶端

2.3.1 啟動(dòng)redis

啟動(dòng)redis 有兩種方式:直接啟動(dòng)和初始化腳本啟動(dòng)。 分別使用與開發(fā)環(huán)境和生產(chǎn)環(huán)境中。

2 直接啟動(dòng)

直接運(yùn)行redis-server 即可,redis 默認(rèn)的接口為6379 .

指定端口啟動(dòng),redis-server --port 6380 ?指定6380 為redis 接口

2 初始化腳本啟動(dòng)

在redis源代碼目錄下,有一個(gè)Utils文件夾,下面有一個(gè)名為redis_init_script 的 初始化腳本文件。使用初始化腳本文件啟動(dòng)步驟:

? 將該文件拷貝到/etc/init.d 目錄下,可以修改文件名,可以不修改,修改文件名是為了更好的辨別redis 的啟動(dòng)接口。

REDISPORT=6379

EXEC=/usr/local/bin/redis-server

CLIEXEC=/usr/local/bin/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid

CONF="/etc/redis/${REDISPORT}.conf"

? 建立需要的文件

/etc/redis 存放redis 配置文件 ? ?路徑可以修改,但要與上面的路徑統(tǒng)一

/var/redis/端口號(hào) 存放持久化文件

? 修改配置文件

在源碼安裝目錄有一個(gè)名為redis.conf 的文件,這個(gè)便是配置文件,修改下面幾項(xiàng):

daemoniz ? ?yes ? ? 一守護(hù)進(jìn)程的方式運(yùn)行

pidfile /var/run/redis_端口號(hào).pid ? ? 設(shè)置文件PID 位置

port ? ? ? ?端口號(hào) 設(shè)置redis 的監(jiān)聽端口

dir ? ? ? ? ?/var/redis/端口號(hào) ? ? ?設(shè)置持久化文件存放的位置

執(zhí)行完上面的命令之后,可以使用 /etc/init.d/redis_端口號(hào) start ?來啟動(dòng)Redis 了 ,而后需要執(zhí)行下面命令,是Redis 跟隨系統(tǒng)啟動(dòng)

sudo update-rc.d redis_端口號(hào) ? defaults

2.3.2 停止Redis

強(qiáng)制終止redis 進(jìn)程有可能會(huì)導(dǎo)致數(shù)據(jù)丟失。正確的停止Redis的方法是 發(fā)送shutdown 命令,語法格式:Redis-cli ? shutdown ?;蛘呤褂胟ill 命令 ,殺死進(jìn)程pid的方式也可以


redis-cli -h 127.0.0.1 -p 6379 ?指定redis 主機(jī) 和監(jiān)聽端口

redis-cli ping ? ? ? ? ? ? ? 測(cè)試客戶端與redis的鏈接是否正常,正常收到pong

第三章 數(shù)據(jù)類型

Redis 支持5種數(shù)據(jù)類型,說明如下:

3.1字符串

Redis 字符串是一個(gè)字節(jié)序列。在 Redis 中字符串是二進(jìn)制安全的,這意味著它們沒有任何特殊終端字符來確定長度,所以可以存儲(chǔ)任何長度為 512 兆的字符串。

示例

redis 127.0.0.1:6379> SET name "yi"

OK

redis 127.0.0.1:6379> GET name

"yi"

在上面的例子中,SET 和 GET 是 Redis 命令,name 和 "yiibai" 是存儲(chǔ)在 Redis 的鍵和字符串值。

3.2哈希

Redis哈希是鍵值對(duì)的集合。 Redis哈希是字符串字段和字符串值之間的映射,所以它們用來表示對(duì)象。

示例

redis 127.0.0.1:6379> HMSET user:1 username yiibai password yiibai points 200

OK

redis 127.0.0.1:6379> HGETALL user:1

1) "username"

2) "yi"

3) "password"

4) "yi"

5) "points"

6) "200"

在上面的例子中,哈希數(shù)據(jù)類型用于存儲(chǔ)包含用戶基本信息的用戶對(duì)象。這里 HSET,HEXTALL 是 Redis 命令同時(shí) user:1 也是一個(gè)鍵。

3.3列表

Redis 列表是簡(jiǎn)單的字符串列表,通過插入順序排序??梢蕴砑右粋€(gè)元素到 Redis 列表的頭部或尾部。

示例

redis 127.0.0.1:6379> lpush tutoriallist redis

(integer) 1

redis 127.0.0.1:6379> lpush tutoriallist mongodb

(integer) 2

redis 127.0.0.1:6379> lpush tutoriallist rabitmq

(integer) 3

redis 127.0.0.1:6379> lrange tutoriallist 0 10

1) "rabitmq"

2) "mongodb"

3) "redis"

列表的最大長度為 ?232 - 1 個(gè)元素(4294967295,每個(gè)列表的元素超過四十億)。

3.4集合

Redis 集合是字符串的無序集合。在 Redis 可以添加,刪除和測(cè)試成員存在的時(shí)間復(fù)雜度為 O(1)。

示例

redis 127.0.0.1:6379> sadd tutoriallist redis

(integer) 1

redis 127.0.0.1:6379> sadd tutoriallist mongodb

(integer) 1

redis 127.0.0.1:6379> sadd tutoriallist rabitmq

(integer) 1

redis 127.0.0.1:6379> sadd tutoriallist rabitmq

(integer) 0

redis 127.0.0.1:6379> smembers tutoriallist

1) "rabitmq"

2) "mongodb"

3) "redis"

注:在上面的例子中 rabitmq 被添加兩次,但由于它是只集合具有唯一特性。集合中的成員最大數(shù)量為 232 - 1(4294967295,每個(gè)集合有超過四十億條記錄)。

3.5集合排序

不同的是,一個(gè)有序集合的每個(gè)成員都可以排序,就是為了按有序集合排序獲取它們,按權(quán)重分值從最小到最大排序。雖然成員都是獨(dú)一無二的,按權(quán)重分?jǐn)?shù)值可能會(huì)重復(fù)。

示例

redis 127.0.0.1:6379> zadd tutoriallist 0 redis

(integer) 1

redis 127.0.0.1:6379> zadd tutoriallist 0 mongodb

(integer) 1

redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq

(integer) 1

redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq

(integer) 0

redis 127.0.0.1:6379> ZRANGEBYSCORE tutoriallist 0 1000

1) "redis"

2) "mongodb"

3) "rabitmq"

第四章 Redis Java

詳細(xì)信息可以查看這篇文章:http://www.cnblogs.com/edisonfeng/p/3571870.html

參考:http://www.yiibai.com/redis/

---------------------------------------------------

少年聽雨歌樓上,紅燭昏羅帳。

壯年聽雨客舟中,江闊云低,斷雁叫西風(fēng)。

感謝支持!

---起個(gè)名忒難

--------------------------------------------------------

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

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

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