加法速算 為什么要用redis,redis有哪些優(yōu)缺點(diǎn)?redis如何實(shí)現(xiàn)擴(kuò)容?
為什么要用redis,redis有哪些優(yōu)缺點(diǎn)?redis如何實(shí)現(xiàn)擴(kuò)容?Redis等鍵值緩存產(chǎn)品有以下三個特點(diǎn):Redis支持?jǐn)?shù)據(jù)持久化,可以將數(shù)據(jù)保存在磁盤內(nèi)存中,重啟時可以重新加載使用。Redis不
為什么要用redis,redis有哪些優(yōu)缺點(diǎn)?redis如何實(shí)現(xiàn)擴(kuò)容?
Redis等鍵值緩存產(chǎn)品有以下三個特點(diǎn):Redis支持?jǐn)?shù)據(jù)持久化,可以將數(shù)據(jù)保存在磁盤內(nèi)存中,重啟時可以重新加載使用。Redis不僅支持簡單的鍵值數(shù)據(jù),還提供list、set、Zset、hash等數(shù)據(jù)結(jié)構(gòu)存儲。Redis支持?jǐn)?shù)據(jù)備份,即主從模式下的數(shù)據(jù)備份。Redis具有極高的性能。C redis可以讀110000次/s,寫81000次/s。豐富的數(shù)據(jù)類型C redis支持二進(jìn)制大小寫的字符串、列表、哈希、集合和有序集合數(shù)據(jù)類型操作。原子C redis的所有操作都是原子的。同時,redis還支持合并多個操作后的原子執(zhí)行。富特性C redis還支持發(fā)布/訂閱、通知、密鑰過期等特性。
redis原子的遞增一定能保證數(shù)據(jù)是一致的嗎?
Redis的設(shè)計模式?jīng)Q定了incr操作既能滿足原子性,又能保證數(shù)據(jù)的一致性。
原子性和一致性是數(shù)據(jù)庫事務(wù)中最常提到的概念,包括隔離和持久性。為什么數(shù)據(jù)庫事務(wù)要同時滿足這四個特性,而redis卻不能?主要原因是它們的并發(fā)處理模式不同。
Redis使用IO多路復(fù)用模式,即多個網(wǎng)絡(luò)連接多路復(fù)用一個處理線程。在這種模式下,所有命令都按順序執(zhí)行,在多線程場景中沒有并發(fā)問題。同時,命令的原子性確保操作要么完全執(zhí)行要么完全回滾。沒有第三種情況,保證了數(shù)據(jù)的一致性:其他命令只能在前一個命令執(zhí)行或失敗后執(zhí)行,并且數(shù)據(jù)狀態(tài)穩(wěn)定,必須是一致的。
如何高效向redis插入大量的數(shù)據(jù)?
1. 創(chuàng)建一個新的文本文件,包括redis命令
set key0 value0 set key1 value1。。。Set Keyn valuen
如果你有原始數(shù)據(jù),構(gòu)造這個文件并不困難,比如shell或Python
2。將這些命令轉(zhuǎn)換為redis協(xié)議。
redis pipeline函數(shù)支持redis協(xié)議,而不是直接的redis命令。
如何轉(zhuǎn)換可以參考以下腳本。
3. 插入帶管道的cat數(shù)據(jù).txt|redis cli--pipe
Shell VS redis pipe