Redis一鍵安裝並啟動的指令碼(root使用者)
試過用其他許可權使用者安裝會出錯,可能是因為命令中沒有寫 sudo
切換到root,直接執行即可。
#!/bin/bashcd /usr/local/ && wget http://download。redis。io/releases/redis-5。0。5。tar。gz && tar -zxvf redis-5。0。5。tar。gz && cd /usr/local/redis-5。0。5 && make MALLOC=libc && cd /usr/local/redis-5。0。5/src && make install && cp /usr/local/redis-5。0。5/redis。conf /usr/local/redis-5。0。5/redis。conf。backup && sed -i ‘s/daemonize no$/daemonize yes/g’ /usr/local/redis-5。0。5/redis。conf && redis-server /usr/local/redis-5。0。5/redis。conf
如果想要生產環境使用,根據README的提示,建議執行:
架構演進過程
剛開始,資料存在檔案。
必須知道的常識:
磁碟,兩個指標:磁碟定址是ms級別,頻寬是每秒G/M級別
記憶體:定址是ns級別
在定址上,磁碟比記憶體慢了10W倍
I/O buffer成本問題:
磁碟與磁軌,扇區,一個扇區512Byte小格子,帶來索引的成本變大
所以在格式化磁碟的時候,會有一個4K對齊。
無論你讀多少資料,作業系統都是從磁碟中一次拿4K的資料量。
隨著檔案變大,速度變慢,為什麼?
因為IO成為瓶頸。
資料庫的出現
DataPage:大小為4K,正好符合作業系統的一次IO的資料量。
資料、索引、B+樹(減少大的IO)
小常識:資料在磁碟和記憶體體積不一樣
在磁碟當中沒有指標的概念,資料不能像物件一樣出現,沒有指標,如果一個東西存了兩遍,就是實打實的兩遍。
磁碟和記憶體的折中:使用快取
memcached,redis
速度的提升,受限於2個基礎設施的限制
1、馮諾依曼體系的硬體(磁碟IO,慢)
2、乙太網,TCP/IP的網路(不穩定,資料一致性等問題)
也是因此出現了memcached,redis
官網描述
Redis 是一個開源(BSD許可)的,記憶體中的資料結構儲存系統,它可以用作資料庫、快取和訊息中介軟體。
它支援多種型別的資料結構,如 字串(strings), 雜湊(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 與範圍查詢, bitmaps, hyperloglogs 和 地理空間(geospatial) 索引半徑查詢。 Redis 內建了 複製(replication),LUA指令碼(Lua scripting), LRU驅動事件(LRU eviction),事務(transactions) 和不同級別的 磁碟持久化(persistence), 並透過 Redis哨兵(Sentinel)和自動分割槽(Cluster)提供高可用性(high availability)。
Memcached沒有Redis那麼多資料型別,資料都是以字串(可以用JSON轉換)的形式表示。
那麼,Redis存在那麼多資料型別的意義是什麼?
如果客戶端想要獲得JSON中的某一小部分元素,可以只取其一小部分,直接返回給客戶端。
而Memcached需要全量地返回整個JSON而不能去解析它的一部分,需要客戶端自己去解析。Memcached的效能損耗會在IO以及客戶端資料的解析上。
因此,重要的不是型別,重要的是Redis Server對每種資料型別都實現了自己的方法(函式)。
本質上是一種解耦,計算向資料移動。
Redis安裝
安裝之後就可以在任何位置用service啟動redis了
檢視redis狀態:
安裝完成~
插曲:關於 epoll
(續上圖)下圖右側是零複製的過程
Redis使用的epoll
nginx也是用了epoll