Memcached

Memcached

一、简介

memcached是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但被许多网站使用。这是一套开放源代码软件,以BSD license授权发布。

memcached缺乏认证以及安全管制,这代表应该将memcached服务器放置在防火墙后。

memcached的API使用三十二比特的循环冗余校验(CRC-32)计算键值后,将数据分散在不同的机器上。当表格满了以后,接下来新增的数据会以LRU机制替换掉。由于memcached通常只是当作缓存系统使用,所以使用memcached的应用程序在写回较慢的系统时(像是后端的数据库)需要额外的代码更新memcached内的数据。

memcached作为高速运行的分布式缓存服务器,具有以下的特点。

· 基于c/s架构,协议简单

· 基于libevent的事件处理

· 内置内存存储方式(slab allowcation)

· memcached不互相通信的分布式

  • 数据过期方式:Lazy Expiration 和 LRU

二、Memcached安装

安装必要memcached libmemcached libevent

[root@memcached ~]# yum install -y memcached libmemcached libevent

开启memcached服务

[root@memcached ~]# systemctl start memcached

三、命令行

[root@memcached ~]# yum install -y telnet
[root@memcached ~]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set key2 0 30 2
ab
STORED
get key2
VALUE key2 0 2
ab
END

四、PHP连接Memcached

安装php的memcache扩展

[root@memcached ~]# cd /usr/local/src/
[root@memcached ~]# wget  https://pecl.php.net/get/memcache-2.2.3.tgz 
[root@memcached ~]# tar zxf memcache-2.2.3.tgz 
cd memcache-2.2.3
/usr/local/php-fpm/bin/phpize
./configure --with-php-config=/usr/local/php-fpm/bin/php-config
make && make install    

修改php.ini添加一行

[root@memcached memcache-2.2.3]# vi /usr/local/php/etc/php.ini 
extension="memcache.so"

检查

[root@memcached memcache-2.2.3]# /usr/local/php/bin/php -m |grep memcache

执行脚本

[root@memcached ~]# vi 1.php
test success
[root@memcached ~]# /usr/local/php/bin/php 1.php start

五、Memcached中存储session

本实例是在lamp/lnmp环境下实现

编辑php.ini添加两行
session.save_handler = memcache 
session.save_path = "tcp://10.24.197.179"  
或者httpd.conf中对应的虚拟主机中添加
php_value session.save_handler "memcache" 
php_value session.save_path "tcp://10.24.197.179"  
或者php-fpm.conf对应的pool中添加
php_value[session.save_handler] = memcache
php_value[session.save_path] = " tcp://10.24.197.179 "
执行
[root@memcached ~]# vi /usr/local/apache2.4/htdocs/session.php
<?php
        session_start();
        $_SESSION['name']='test';    
        echo session_id()."<br/>";        
        echo $_SESSION['name'];
?>

[root@memcached htdocs]# /usr/local/php/bin/php session.php start
s3p3qpekcvrft9245umcil4v80<br/>test
telnet 127.0.0.1 11211
get s3p3qpekcvrft9245umcil4v80
VALUE s3p3qpekcvrft9245umcil4v80 0 16
name|s:4:"test";
END

注:如果没出现尝试curl localhost/session.php

 

posted @ 2022-03-10 15:27  蜡笔小新๑  阅读(29)  评论(0编辑  收藏  举报