二、構建快取伺服器
2.2 redis儲存
總結許多web應用都將資料儲存到 rdbms(relational database management system,關聯式資料庫管理系統)中,應用伺服器從中讀取資料並在瀏覽器中顯示。但隨著資料量的增大、訪問的集中,就會出現rdbms的負擔加重、資料庫響應惡化、 **顯示延遲等重大影響。memcached/redis是高效能的分布式記憶體快取伺服器,通過快取資料庫查詢結果,減少資料庫訪問次數,以提高動態web等應用的速度、 提高可擴充套件性。
nosql(非關係型資料庫)常見的產品有redis、mongodb、memcached等。我在《linux系統之關係型資料庫與非關係型資料庫》這篇部落格中有對關係型資料庫和非關係型資料庫的特點、兩者區別簡單介紹過,感興趣的可以去看一下。一般非關係型資料庫以鍵值對**(key-value)**的方式儲存資料,在實際生產中我們也將nosql產品做快取資料庫,從而緩解後端db壓力。
優點:
缺點:
2.1.1 服務框架
2.1.2 快取原理
memcache能存放多少資料,取決於伺服器本身的記憶體有多大。2.1.3 memcache特點
2.1.4 安裝memcached
(1)安裝memcached
[root@memcached ~]# yum install memcached -y
[root@memcached ~]# systemctl start memcached #啟動
(2)修改配置檔案
[root@memcached ~]# vim /etc/sysconfig/memcached
port="11211" #監聽的埠。預設11211,可以修改
user="memcached" #使用者
maxconn="1024" #預設併發。可以修改,每秒允許1024個連線memcached
cachesize="64" #給的記憶體。預設是單位是m
options="" #監聽的網路位址
把ip位址發給開發人員,開發的會使用api介面連線memcached。(3)測試
[root@memcached ~]# yum install -y telnet #安裝telent
[root@memcached ~]# telnet 192.168.246.188 11211
trying 192.168.246.188...
connected to 192.168.246.188.
escape character is '^]'. #到此表明可連線memcached
set name 0 60 9 #設定名稱為name的key
hello #給name的值
stored #出現stored表示已經儲存成功。
get name #查詢key值
value name 0 9
hello
endquit #退出
引數解釋:memcached不足:儲存的資料型別單一,而且資料只能儲存在記憶體中,無法實現資料的持久化,伺服器重啟,資料將消失,因此在實際生產中很少去用它。name:key的名字 自己定義
0:key的id號,需要和其他的key不一樣
60:快取過期時間,單位為秒,0為永遠
9:字串最大長度
2.2.1 redis介紹
redis是乙個開源的、使用c語言編寫的、可基於記憶體也可持久化的key-value資料庫。redis的官網:redis.io
注:網域名稱字尾io屬於國家網域名稱,是british indian ocean territory,即英屬印度洋領地。2.2.2 redis的特點
2.2.3 安裝redis
安裝單機版redis[root@redis-master redis]# yum install -y gcc make #安裝編譯工具
[root@redis-master redis]# make
#注:如果報錯請將剛才解壓的安裝包刪除掉,再次重新解壓並進行make安裝即可。
(2)修改redis配置檔案
[root@redis-master redis]# cp redis.conf redis.conf.bak
[root@redis-master redis]# vim redis.conf #修改如下
bind 192.168.246.202 #只監聽內網ip
daemonize yes #開啟後台模式將on改為yes
port 6379 #埠號
(3)配置redis為systemctl啟動
[root@redis-master redis]# cd /lib/systemd/system
[root@redis-master system]# vim redis.service
[unit]
description=redis
after=network.target
[service]
[install]
wantedby=multi-user.target
引數詳解:
• [unit]
#表示這是基礎資訊
• description #是描述
• after #是在那個服務後面啟動,一般是網路服務啟動後啟動
• [service]
#表示這裡是服務資訊
• execstart #是啟動服務的命令
• execstop #是停止服務的指令
• [install]
#表示這是是安裝相關資訊
• wantedby #是以哪種方式啟動:multi-user.target表明當系統以多使用者方式(預設的執行級別)啟動時,這個服務需要被自動執行。
(4)啟動redis服務
(5)登入redis
[root@redis-master src]# ./redis-cli -h 192.168.139.154 -p 6379
192.168.139.154:6379> ping #測試redis是否可以用
pong #出現該字樣,表明redis快取伺服器可用
單機版redsi已經部署完成。將ip和埠發給開發就可以了。以上就是對memcache和redis快取伺服器的構建,對非關係型資料庫及其相關產品做了簡單的介紹,包括常用非關係型資料庫快取原理、特點的介紹以及安裝。後續我將會講redis如何實現資料持久化、redis-sentinel(哨兵模式)監控redis集群等知識點。總結一下redis和memcache的區別:
快取架構及Memcache,Redis的比較
快取架構的存在使得客戶端訪問服務端時的速度得到很大的改進,因為當客戶端向服務端傳送請求的時候,先向快取層傳送請求,如果請求的資料存在於快取中,則直接將其返回。如果快取中沒有對應的資料就會實現快取穿透,去儲存層查詢,當在儲存層查詢到資料後會回寫到快取層,以便下次可以在快取層查詢相同資訊,同時返回給客戶...
memcache,redis分布式快取詳解
一 問題一 為什麼要有分布式快取?什麼時候用分布式快取?鎖機制,有可能會造成死鎖,簡單點就是伺服器卡死,宕機 cpu 100 先普及一下資料庫鎖機制 select from table1 此時會給這個表加上s鎖 共享鎖 update table1 set colum somedata 此時給tabl...
memcache redis原理對比
一 問題 資料庫表資料量極大 千萬條 要求讓伺服器更加快速地響應使用者的需求。二 解決方案 1.通過高速伺服器cache快取資料庫資料 2.記憶體資料庫 這裡僅從資料快取方面考慮,當然,後期可以採用hadoop hbase hive等分布式儲存分析平台 三 主流解cache和資料庫對比 上述技術基本...