Memcache Redis快取構建

2021-10-25 08:01:56 字數 3981 閱讀 6889

二、構建快取伺服器

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 #退出

引數解釋:

name:key的名字 自己定義

0:key的id號,需要和其他的key不一樣

60:快取過期時間,單位為秒,0為永遠

9:字串最大長度

memcached不足:儲存的資料型別單一,而且資料只能儲存在記憶體中,無法實現資料的持久化,伺服器重啟,資料將消失,因此在實際生產中很少去用它。

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和資料庫對比 上述技術基本...