memcached

數據結構模型:

結構化數據:關系型數據庫;mysql、mariadb、oracledb

半結構化數據:xml、json、nosql

非結構化數據:文件系統;

緩存系統的種類:
代理式緩存;
旁路式緩存;
memcached的特性:
k/v緩存:可序列化數據;存儲項:key/value,標志,過期時間;
功能的實現一半依賴于服務端,一半依賴客戶端;
分布式緩存;互不通信的分布式集群;
O(1)的執行效率;
清理過期數據:LRU(最近最少使用算法):a、緩存項過期;b、緩存空間用盡;

分布式系統主機路由:1、取模法;2、一致性hash;

安裝memcached:監聽端口:11211/tcp, 11211/udp
# yum install memcached
service unit: /var/lib/systemd/systemd/memcached.service 其配置文件/etc/sysconfig/memcached
命令:
存儲類命令:set, add, replace(重新定義), append(后插), prepend(前插)
獲取數據類命令:get, delete, incr(增加幾個值)/decr(減少幾個值)
統計類命令:stats, ?stats items, stats slabs, stats sizes
清空:flush_all
memcached程序的常用選項:
-l ?IP:監聽的IP地址;
-m <num>:用于緩存數據的內存空間大小,單位為MB,默認為64;
-c <num>:最大并發連接數;默認為1024;
-p PORT:tcp端口
-U PORT:UDP端口;0為關閉;
-t <num>:用于處理請求的最大線程數;
-M:內存耗盡時返回錯誤信息,而不是LRU算法清理;
-f <num>: growth factor, 增長因子;默認為1.25倍;
-n <num>:指明最小的slab大小,默認是96;
-S:借助sasl認證
php連接memcached服務器的擴展:memcache:php-pecl-memcache;
libmemcached:提供了相關的memcached管理工具
python-memcache:python連接memcached服務的擴展
默認沒有認證功能,但可借助于sasl實現認證
sasl:simple authentication layer簡單認證安全層
示例:lamp基于memcached做php的會話保持;

前提:
1、配置各php支持使用memcache;
2、安裝配置好memcached服務器,這里假設其地址為172.16.200.11,端口為11211;

一、配置php將會話保存至memcached中

編輯php.ini文件,確保如下兩個參數的值分別如下所示:
session.save_handler = memcache
session.save_path = “tcp://172.16.200.11:11211?persistent=1&weight=1&timeout=1&retry_interval=15”

二、測試

新建php頁面setsess.php,為客戶端設置啟用session:
<?php
session_start();
if (!isset($_SESSION[‘www.MageEdu.com’])) {
$_SESSION[‘www.MageEdu.com’] = time();
}
print $_SESSION[‘www.MageEdu.com’];
print “<br><br>”;
print “Session ID: ” . session_id();
?>

新建php頁面showsess.php,獲取當前用戶的會話ID:
<?php
session_start();
$memcache_obj = new Memcache;
$memcache_obj->connect(‘172.16.200.11’, 11211);
$mysess=session_id();
var_dump($memcache_obj->get($mysess));
$memcache_obj->close();
?>

<?php
// Generating cookies must take place before any HTML.
// Check for existing “SessionId” cookie
$session = $HTTP_COOKIE_VARS[“SessionId”];
if ( $session == “” ) {
// Generate time-based unique id.
// Use user’s IP address to make more unique.
$session = uniqid ( getenv ( “REMOTE_ADDR” ) );
// Send session id – expires when browser exits
SetCookie ( “SessionId”, $session );
}
?>
<HTML>
<HEAD><TITLE>Session Test</TITLE></HEAD>
<BODY> <br> 16 Current session id: <?php echo $session ?>
</BODY></HTML>

示例:LNMMP,反代ha1和ha2做keepalived高可用;負載均衡rs1和rs2,利用memcached做php session保持;如圖
1
memcached、mariadb-server、nfs:ip ?192.168.71.40
#

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/102886

(0)
N26-深圳-城市蝸牛N26-深圳-城市蝸牛
上一篇 2018-07-13 20:54
下一篇 2018-07-14 18:26

相關推薦

  • linux基礎命令及文件管理

    linux基礎和幫助 echo 命令擴展行:$()或` ` # echo $USER # root # echo “i am `whoami`” # i am root 括號擴展:{ } # echo file{1,3,5} # file1 file3 file5 # rm -f file{1,3,5} # echo {1..10} …

    Linux筆記 2018-04-08
  • 淺析網絡IO模型

    物是人非事事休,欲語淚先流。

    2018-04-09
  • Linux上的文件管理類命令

    一、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。(1)目錄管理命令——ls:列出指定目錄下的內容格式:ls [OPTION]… [FILE]…-a:顯示所有文件包括隱藏文件-A:顯示除.和..之外的所有文件-l,–long:顯示文件的詳細屬性信息-h:對文件大小進行單位換算,可能影響精度-d:查…

    Linux筆記 2018-05-19
  • N31第一周

    一、計算機的組成及其功能。 計算機是由運算器、控制器、存儲器、輸入設備、輸出設備五大部件組成,每一個部分分別按照要求執行特定的基本功能。 運算器:運算器的主要功能是對數據進行各種運算。 控制器:控制器是整個計算機系統的控制中心,它指揮計算機各部分協調地工作,保證計算機按照預先規定的目標和步驟有條不紊的進行操作及處理。 存儲器:存儲器的主要功能是存儲程序和各種…

    2018-06-19
  • 手把手系列(三)教你自制簡單Linux系統

    CentOS啟動相關最重要的幾個文件有:內核vmlinuz文件、虛擬文件系統initramfs文件、grub文件以

    及init啟動程序,圍繞這幾個文件,我們來制作一個能夠簡單啟動的自制Linux系統

    2018-05-14
欧美性久久久久