文章目錄
- 一、Memcached 簡介:
- 1、介紹:
- 2、特點:
- 3、存盤方式:
- 二、關于Redis和Memcached的不同,主要有以下幾點
- 1、存盤方式:
- 2、資料支持型別:
- 3、使用底層模型不同:
- 4、運行環境不同:
- 5、Redis 原生支持集群模式
- 6、性能對比
- 7、Memcached還有如下缺點
- 8、總結
- 二、案例部署
- 1、實驗環境
- 2、拓撲圖如下
- 3、具體配置如下
- (1)服務端安裝部署memcached
- (2)客戶端安裝部署LAMP架構
- (3)測驗lamp架構
- (4)測驗php連接資料庫
- (5)客戶端安裝memcached連接服務端
- (6)測驗memcached連接情況
- 三、Memcached 資料庫操作與管理
- 1、安裝使用 telnet 連接主機IP地址以及11211埠,就可以對資料庫進行操作和管理了
- 2、新建資料:
- 3、查詢資料
- 4、更新資料:
- 5、檢測/查看 更新資料:
- 6、追加資料:
- 7、清除資料:
- 8、查看服務器統計資訊:
- 9、退出:
一、Memcached 簡介:
1、介紹:
Memcached 是一個高性能的分布式記憶體物件快取系統,用于動態Web應用以減輕資料庫負載,它通過在記憶體中快取資料和物件來減少讀取資料庫的次數,從而提高動態、資料庫驅動網站的速度,Memcached基于一個存盤鍵/值對的hashmap,其守護行程(daemon )是用C寫的,但是客戶端可以用任何語言來撰寫,并通過memcached協議與守護行程通信,
2、特點:
memcached作為高速運行的分布式快取服務器,具有以下的特點:
1、協議簡單;
2、基于libevent的事件處理;
3、內置記憶體存盤方式;
4、memcached不互相通信的分布式,
3、存盤方式:
為了提高性能,memcached中保存的資料都存盤在memcached內置的記憶體存盤空間中,由于資料僅存在于記憶體中,因此重啟memcached、重啟作業系統會導致全部資料消失,另外,內容容量達到指定值之后,就基于LRU(Least Recently Used)演算法自動洗掉不使用的快取,memcached本身是為快取而設計的服務器,因此并沒有過多考慮資料的永久性問題,
二、關于Redis和Memcached的不同,主要有以下幾點
1、存盤方式:
Memcached 把資料全部存在記憶體之中,斷電后會掛掉,資料不能超過記憶體大小
Redis有部份存在硬碟上,這樣能保證資料的持久性,支持資料的持久化(筆者注:有快照和AOF日志兩種持久化方式,在實際應用的時候,要特別注意組態檔快照引數,要不就很有可能服務器頻繁滿載做dump),
2、資料支持型別:
Redis在資料支持上要比Memcached多的多,
3、使用底層模型不同:
新版本的Redis直接自己構建了VM 機制 ,因為一般的系統呼叫系統函式的話,會浪費一定的時間去移動和請求,
4、運行環境不同:
Redis目前官方只支持LINUX 上去行,從而省去了對于其它系統的支持,這樣的話可以更好的把精力用于本系統 環境上的優化,雖然后來微軟有一個小組為其寫了補丁,但是沒有放到主干上
Redis 支持復雜的資料結構
Redis 相比 Memcached 來說,擁有更多的資料結構,能支持更豐富的資料操作,如果需要快取能夠支持更復雜的結構和操作, Redis 會是不錯的選擇,
5、Redis 原生支持集群模式
在 redis3.x 版本中,便能支持 Cluster 模式,而 Memcached 沒有原生的集群模式,需要依靠客戶端來實作往集群中分片寫入資料,
6、性能對比
由于 Redis 只使用單核,而 Memcached 可以使用多核,所以平均每一個核上 Redis 在存盤小資料時比 Memcached 性能更高,而在 100k 以上的資料中,Memcached 性能要高于 Redis,雖然 Redis 最近也在存盤大資料的性能上進行優化,但是比起 Remcached,還是稍有遜色,
7、Memcached還有如下缺點
key 不能超過 250 個位元組;
value 不能超過 1M 位元組;
key 的最大失效時間是 30 天;
只支持 K-V 結構,不提供持久化和主從同步功能,
8、總結
個人總結一下,有持久化需求或者對資料結構和處理有高級要求的應用,選擇Redis,其他簡單的key/value存盤,選擇Memcached,
單純 K-V 快取的場景可以使用 MC,而需要快取 list、set 等特殊資料格式,可以使用 Redis;
需要快取一個用戶最近播放視頻的串列可以使用 Redis 的 list 來保存、需要計算排行榜資料時,可以使用 Redis 的 zset 結構來保存,
二、案例部署
1、實驗環境
vmware15.5
centos7.6
memcached-1.5.6.tar.gz
libevent-2.1.8-stable.tar.gz
php-5.6.11.tar.bz2
mysql-5.6.26.tar.gz
apr-1.6.2.tar.gz
apr-util-1.6.0.tar.gz
httpd-2.4.29.tar.bz2
2、拓撲圖如下

3、具體配置如下
(1)服務端安裝部署memcached
(1)安裝依賴環境包:
yum install gcc gcc-c++ make -y
(2)解壓軟體包:
tar zxvf libevent-2.1.8-stable.tar.gz -C /opt/
tar zxvf memcached-1.5.6.tar.gz -C /opt/ //時間庫 是memcache的依賴包
(3)編譯安裝 libevent :
cd /opt/libevent-2.1.8-stable
./configure --prefix=/usr/local/libevent
make && make install
(4)編譯安裝 memcached :
cd /opt/memcached-1.5.6/
./configure
–prefix=/usr/local/memcached
–with-libevent=/usr/local/libevent/
make && make install
(5)方便操作可以創建一個軟鏈接:
ln -s /usr/local/memcached/bin/* /usr/local/bin
(6)開啟 memcached 服務:
memcached -d -m 32m -p 11211 -u root
//-d守護行程 ;-m快取大小32M ;-p埠11211
(7)查看埠是否正常開發:
netstat -natp | grep memcached
(8)關閉防火墻
[root@promote memcached-1.5.6]# systemctl stop firewalld
[root@promote memcached-1.5.6]# setenforce 0
(9)測驗memcache
root@promote memcached-1.5.6]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set username 0 0 10 0不設定他的序列號 0 不設定他的過期時間 10 設定字符長度
evereqqqqq
STORED
gets username
VALUE username 0 10 2 更新因子 每次更新都會加一
evereqqqqq
END
(2)客戶端安裝部署LAMP架構
------------安裝Apache----下面兩個插件是httpd2.4以后的版本所需要-----
tar xf apr-1.6.2.tar.gz
tar xf apr-util-1.6.0.tar.gz
tar xf httpd-2.4.29.tar.gz
mv apr-1.6.2 httpd-2.4.29/srclib/apr
mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
yum -y install \
gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl
cd httpd-2.4.29
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
make && make install
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
vi /etc/init.d/httpd
# chkconfig: 35 85 21 //35級別自動運行 第85個啟動 第21個關閉
# description: Apache is a World Wide Web server
chkconfig --add httpd //將httpd加入到SERVICE管理器
vi /usr/local/httpd/conf/httpd.conf
ServerName
ln -s /usr/local/httpd/conf/httpd.conf /etc/
ln -s /usr/local/httpd/bin/* /usr/local/bin/
systemctl stop firewalld.service
setenforce 0
httpd -t
apachectl -t
service httpd start
netstat -anpt | grep 80
--------------以下是安裝MYSQL-----http://mirrors.sohu.com/mysql/---
yum install -y ncurses-devel autoconf
tar xzvf mysql-5.6.26.tar.gz
cd mysql-5.6.26
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DSYSCONFIDIR=/etc \
-DMYSQL_DATADIR=/home/mysql/ \
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock
make && make install
cp support-files/my-default.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig --add /etc/init.d/mysqld
chkconfig mysqld --level 235 on
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
echo $PATH
useradd -s /sbin/nologin mysql
chown -R mysql:mysql /usr/local/mysql/
/usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--ldata=/var/lib/mysql \
--basedir=/usr/local/mysql \
--datadir=/home/mysql
ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock
vi /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/home/mysql
service mysqld start
netstat -anpt | grep 3306
mysqladmin -u root -p password "abc123" //給root賬號設定密碼
---------以下安裝PHP------------
yum -y install \
gd \
libpng \
libpng-devel \
pcre \
pcre-devel \
libxml2-devel \
libjpeg-devel
tar xjvf php-5.6.11.tar.bz2
cd php-5.6.11
./configure \
--prefix=/usr/local/php5 \
--with-gd \
--with-zlib \
--with-apxs2=/usr/local/httpd/bin/apxs \
--with-mysql=/usr/local/mysql \
--with-config-file-path=/usr/local/php5 \
--enable-mbstring
make && make install
cp php.ini-development /usr/local/php5/php.ini
ln -s /usr/local/php5/bin/* /usr/local/bin/
ln -s /usr/local/php5/sbin/* /usr/local/sbin/
vi /etc/httpd.conf //在合適位置新增
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
vi /usr/local/httpd/htdocs/index.php
<?php
phpinfo();
?>
在網頁測驗“http://192.168.80.182/index.php”
--------下面測驗資料庫作業是否正常-----
mysql -u root -p
CREATE DATABASE sky;
GRANT all ON sky.* TO 'skyuser'@'%' IDENTIFIED BY 'admin123';
flush privileges;
<?php
$link=mysql_connect('192.168.80.193','skyuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
mysql_close();
?>
(3)測驗lamp架構

(4)測驗php連接資料庫
[root@localhost apache]# mysql -u root -p
GRANT all ON dog.* TO 'doguser'@'%' IDENTIFIED BY 'adc123';
mysql> flush privileges;
[root@localhost mysql]# vim /usr/local/httpd/htdocs/index.php
<?php
$link=mysql_connect('192.168.110.133','doguser','adc123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
mysql_close();
?>

(5)客戶端安裝memcached連接服務端
(1)安裝依賴包: shell工具
yum install autoconf -y
(2)解壓:
tar zvxf memcache-2.2.7.tgz -C /opt/
(3)編譯(使用PHP的phpize腳本生成配置腳本configure,再進行配置編譯):
cd /opt/memcache-2.2.7
/usr/local/php5/bin/phpize
./configure
–enable-memcache
–with-php-config=/usr/local/php5/bin/php-config
(4)安裝:
make && make install
(5)安裝完成后,會出現一行,這是共享檔案的位置,后面要用到:
/usr/local/php5/lib/php/extensions/no-debug-zts-20131226/
(6)編輯測驗頁面
vim /usr/local/httpd/htdocs/index.php
(6)測驗memcached連接情況

三、Memcached 資料庫操作與管理
1、安裝使用 telnet 連接主機IP地址以及11211埠,就可以對資料庫進行操作和管理了
yum install telnet -y
telnet 127.0.0.1 11211 //連接本地用 127.0.0.1就可以了,連接其他主機使用對應IP地址即可
2、新建資料:
add username 0 0 7 //添加資料(兩個0表示:不進行壓縮和序列化標識,資料過期時間為永不過期;標識號是7就需要輸入7位數,)
allways //輸入一個7位數
3、查詢資料
get username //查詢資料
gets username
4、更新資料:
set username 0 0 10 //更新資訊,若鍵名不存在,則自行添加
everything
replace username 0 0 8 //更新資訊,若鍵名不存在,則報錯
12345678
5、檢測/查看 更新資料:
gets username //檢測更新
VALUE username 0 8 4
12345678
6、追加資料:
append username 0 0 7 //鍵值后追加資料
example
prepend username 0 0 2 //鍵值前追加資料
un
7、清除資料:
delete username //清除指定的鍵值資料
flush_all //清除所有快取資料
OK
8、查看服務器統計資訊:
stats //顯示狀態資訊
stats items //回傳所有鍵值對的統計資訊
stats cachedump 1 0 //回傳指定存盤空間的鍵值對
stats slabs //顯示各個slab的資訊
stats sizes //輸出所有item的大小和個數
stats reset //清空統計資料
9、退出:
quit
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/51901.html
標籤:AI
下一篇:Unity3的》》崩潰,求助大牛,unity3D里面的全部sprite貼圖都missing了,scene里面的東西根本回到兩天前
