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.178linux.com/102886

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

相关推荐

  • 文件管理基础知识

                   文件管理 目录篇 / :根目录 bin    boot    dev    etc    home    root    run     sbin    tmp    usr   var 字符界面颜色的意义: 蓝色=目录、绿色=可执行文件、红色=压缩文件、浅蓝色=链接文件 灰色=其他文件 boot:引导文件的存放目录  bin:…

    Linux笔记 2018-04-08
  • 运维之pxe、dhcp、cobbler

    运维之pxe、dhcp、cobbler 把一个主机接入TCP/IP网络,要配置哪些网络参数:ip/mask、gateway、dns server;参数配置方式:1、静态配置;2、动态分配:a、bootp协议b、dhcp协议:引入了“租约”的bootp; DHCP:动态主机配置协议:arp:address resolving protocol:地址解析协议:I…

    Linux笔记 2018-07-22
  • linux文件管理命令和bash展开式

    文件管理 展开式

    Linux笔记 2018-05-21
  • linux发行版的基础目录名称命名法则和功用规定

    一.文件名使用法则;      1.严格区分字符大小写      2.目录也是文件,在同一路径下,两个文件不能同名      3.文件名除了/以外的任意字符都可以使用,最长不超过255字符。      4.所有由.开头的文件都是隐藏文件。 二.文件系统:层级结构;有索引;      /:原初起点:      第二层结构;      第三层结构;      倒…

    Linux笔记 2018-05-13
  • 软件包管理 rpm yum的使用

    软件包管理 链接主要作用是吧各个模块之间互相引用的部分处理好, 使得各个模块之间能够正确的链接,分为静态和动态 静态链接  以.a为后缀  把程序对应的依赖库复制到包           升级难 需重新编译  占用空间多 迁移容易 动态链接  以.so为后缀 把依赖加做动态链接    占用空间少  升级方便           若一个库被删,那么所有依赖此库…

    Linux笔记 2018-04-22
  • Linux用户组管理及用户权限及管道符应用

    一、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 ]# who |  cut -d ‘ ‘ -f1 | sort -u who:显示所有已经登录用户的用户名 cut -d ‘ ‘ -f1:取第1列字段数据   sort -u:忽略相同行数据 二、取出最后登录到…

    2018-07-07