redis使用

Redis優(yōu)勢(shì):

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

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

3.原子– Redis的所有操作都是原子性的,同時(shí)Redis還支持對(duì)幾個(gè)操作合并后的原子性執(zhí)行。(事務(wù))

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



安裝(我一般安裝在服務(wù)器):

源碼包下載鏈接:http://download.redis.io/releases/

安裝依賴:yum install gcc-c++

下載后解壓縮,make && make install即可


啟動(dòng):

可啟動(dòng)多個(gè)redis,復(fù)制配置文件,修改其端口即可

后臺(tái)進(jìn)程運(yùn)行:把配置文件中的daemonize no 為 yes

Eg:./src/redis-server?redis.conf


連接:

Eg:./src/redis-cli -h 指定ip -p 指定端口 -a 指定密碼

也可以用桌面工具連接:RedisDesktopManager



使用:

1.Redis自己安裝一般有十五個(gè)倉庫;

Eg:切換1倉庫 select 1;


[if !supportLists]2.?[endif]redis有五種類型:字符串,集合,有序集合,哈希,列表

字符串:?key-value?

集合:是String 類型的無序集合。集合成員是唯一的,這就意味著集合中不能出現(xiàn)重復(fù)的數(shù)據(jù)

有序集合:有序集合和集合一樣也是string類型元素的集合,且不允許重復(fù)的成員。

不同的是每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè)double類型的分?jǐn)?shù)。redis正是通過分?jǐn)?shù)來為集合中的成員進(jìn)行從小到大的排序。

有序集合的成員是唯一的,但分?jǐn)?shù)(score)卻可以重復(fù)


哈希:是一個(gè)string類型的field和value的映射表,Redis 中每個(gè) hash 可以存儲(chǔ) 232?- 1 鍵值對(duì)(40多億)

列表:列表是簡(jiǎn)單的字符串列表,按照插入順序排序

Eg:

哈希值設(shè)置:HSET myhash field1 "foo"

哈希值獲?。篐GET myhash field1

具體每種類型的語法文檔描述的很清晰了:https://www.runoob.com/redis/redis-strings.html


[if !supportLists]3.?[endif]訂閱

發(fā)布訂閱(pub/sub)是一種消息通信模式:發(fā)送者(pub)發(fā)送消息,訂閱者(sub)接收消息


[if !supportLists]4.?[endif]事務(wù)

單個(gè)Redis 命令的執(zhí)行是原子性的,但 Redis 沒有在事務(wù)上增加任何維持原子性的機(jī)制,所以 Redis 事務(wù)的執(zhí)行并不是原子性的。

事務(wù)可以理解為一個(gè)打包的批量執(zhí)行腳本,但批量指令并非原子化的操作,中間某條指令的失敗不會(huì)導(dǎo)致前面已做指令的回滾,也不會(huì)造成后續(xù)的指令不做。


持久化

Rdb(默認(rèn)):RDB持久化方式是通過快照(snapshotting)完成的,當(dāng)符合一定條件時(shí),redis會(huì)自動(dòng)將內(nèi)存中所有數(shù)據(jù)以二進(jìn)制方式生成一份副本并存儲(chǔ)在硬盤上。當(dāng)redis重啟時(shí),并且AOF持久化未開啟時(shí),redis會(huì)讀取RDB持久化生成的二進(jìn)制文件(默認(rèn)名稱dump.rdb,可通過設(shè)置dbfilename修改)進(jìn)行數(shù)據(jù)恢復(fù),對(duì)于持久化信息可以用過命令“info?Persistence”查看

優(yōu)點(diǎn):

1.RDB?是一個(gè)非常緊湊(compact)的文件,體積小,因此在傳輸速度上比較快,因此適合災(zāi)難恢復(fù)。

2.RDB?可以最大化?Redis?的性能:父進(jìn)程在保存?RDB?文件時(shí)唯一要做的就是?fork?出一個(gè)子進(jìn)程,然后這個(gè)子進(jìn)程就會(huì)處理接下來的所有保存工作,父進(jìn)程無須執(zhí)行任何磁盤?I/O?操作。

3.RDB?在恢復(fù)大數(shù)據(jù)集時(shí)的速度比?AOF?的恢復(fù)速度要快。

缺點(diǎn):

1.RDB是一個(gè)快照過程,無法完整的保存所以數(shù)據(jù),尤其在數(shù)據(jù)量比較大時(shí)候,一旦出現(xiàn)故障丟失的數(shù)據(jù)將更多。

2.當(dāng)redis中數(shù)據(jù)集比較大時(shí)候,RDB由于RDB方式需要對(duì)數(shù)據(jù)進(jìn)行完成拷貝并生成快照文件,fork的子進(jìn)程會(huì)耗CPU,并且數(shù)據(jù)越大,RDB快照生成會(huì)越耗時(shí)。

3.RDB文件是特定的格式,閱讀性差,由于格式固定,可能存在不兼容情況。



Aof(默認(rèn)關(guān)閉):當(dāng)redis存儲(chǔ)非臨時(shí)數(shù)據(jù)時(shí),為了降低redis故障而引起的數(shù)據(jù)丟失,redis提供了AOF(Append Only File)持久化,從單詞意思講,將命令追加到文件。AOF可以將Redis執(zhí)行的每一條寫命令追加到磁盤文件(appendonly.aof)中,在redis啟動(dòng)時(shí)候優(yōu)先選擇從AOF文件恢復(fù)數(shù)據(jù)。由于每一次的寫操作,redis都會(huì)記錄到文件中,所以開啟AOF持久化會(huì)對(duì)性能有一定的影響,但是大部分情況下這個(gè)影響是可以接受的,我們可以使用讀寫速率高的硬盤提高AOF性能。與RDB持久化相比,AOF持久化數(shù)據(jù)丟失更少,其消耗內(nèi)存更少(RDB方式執(zhí)行bgsve會(huì)有內(nèi)存拷貝)。

優(yōu)點(diǎn):

1.數(shù)據(jù)更完整,秒級(jí)數(shù)據(jù)丟失(取決于設(shè)置fsync策略)。

2.兼容性較高,由于是基于redis通訊協(xié)議而形成的命令追加方式,無論何種版本的redis都兼容,再者aof文件是明文的,可閱讀性較好。

缺點(diǎn):

1.數(shù)據(jù)文件體積較大,即使有重寫機(jī)制,但是在相同的數(shù)據(jù)集情況下,AOF文件通常比RDB文件大。

2.相對(duì)RDB方式,AOF速度慢于RDB,并且在數(shù)據(jù)量大時(shí)候,恢復(fù)速度AOF速度也是慢于RDB。

3.由于頻繁地將命令同步到文件中,AOF持久化對(duì)性能的影響相對(duì)RDB較大,但是對(duì)于我們來說是可以接受的。


?

?著作權(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)容