Redis实战(一):Redis一键安装脚本,Redis 介绍及 NIO 原理介绍
Redis一鍵安裝并啟動的腳本(root用戶)
試過用其他權限用戶安裝會出錯,可能是因為命令中沒有寫 sudo
切換到root,直接執行即可。
#!/bin/bash
cd /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
總結
以上是生活随笔為你收集整理的Redis实战(一):Redis一键安装脚本,Redis 介绍及 NIO 原理介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JVM从入门到精通(一):JVM入门级c
- 下一篇: MySQL事务及锁机制大揭秘 - 公开课