在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
简介:memcache是一个分布式高速缓存系统。 分布式是说可以部署在多台服务器上,实现集群效果; 高速是因为数据都是维护在内存中的;
特点和使用场景:1、非持久化存储:对数据存储要求不高(断电或重启后数据会清空); 2、分布式存储:不适合单机使用(单机使用消耗内存,建议单独做一台memcache服务器,和mysql服务器分开); 3、Key/Value存储:格式简单,不支持List、Array数据格式。
安装:1、编译安装 Libevent Memcache 2、使用依赖管理工具 yum、apt-get 建议使用memcached,而不再使用memcache。 CentOs: sudo yum install memcached Ubuntu :sudo apt-get install memcached
启动:CentOs: /usr/bin/memcached -d -l 127.0.0.1 -p 11211 -m 150 -u root (说明:-d以守护进程方式启动,-l指定IP地址,-p指定端口号,-m分配的内存,-u以哪个用户运行memcache)。 ubuntu: memcached -d -l 127.0.0.1 -p 11211 -m 150 -u test 查看memcached是否安装: ps aux | grep memcached 或者 ps -ef | grep memcached ps aux 是用BSD的格式来显示 java这个进程 显示的项目有:USER , PID , %CPU , %MEM , VSZ , RSS , TTY , STAT , START , TIME , COMMAND
查看mamcached是否启动成功: telnet 127.0.0.1 11211 然后结果如下: Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. Escape character is '^]'.是一个提示,提示你使用 在telnet命令行输出quit可以退出telnet命令行。 停止memcached服务: sudo kill PID 杀掉memcached的进程,kill 后跟的是memcached的进程号。 然后再telnet则显示: Trying 127.0.0.1... telnet: Unable to connect to remote host: Connection refused
memcached客户端的安装1、安装Libmemcached。 2、为php安装memcached扩展。 centos: 这次以编译安装方式: (1)下载安装包,libmemcached-1.0.18.tar.gz。 (2)解压:tar zxvf libmemcached-1.0.18.tar.gz。 (3)进入目录:cd libmemcached-1.0.18。 (4)生成编译文件并指定路径:./configure --prefix=/usr/lib/libmemcached。 (5)编译、安装:make && make install。 安装php扩展: (1)下载安装包,打开php扩展官网,https://pecl.php.net/。搜索memcached, 然后找到复制下载链接, 例如:https://pecl.php.net/get/memcached-2.2.0.tgz。 wget https://pecl.php.net/get/memcached-2.2.0.tgz (2)解压:tar zxvf memcached-2.2.0.tgz。 (3)进入目录:cd memcached-2.2.0。 (4)使用phpize安装:phpize。 (5)生成编译文件并指定路径:./configure。 (如果报错提示找不到php-config或者找不到libmemcached,则需要指定自己的配置路径) ./configure --with-php-config=/usr/local/php/bin/php-config --with-libmemcached=/usr/lib/libmemcached 根据自己实际情况配置路径。 如果提示不支持 sasl.h 就需要增加个参数 --disable-memcached-sasl。 如果报: pkg-config not found 就安装pkg-config。 (6)编译:make。 (7)安装:make install,会看到结果: Installing shared extensions: /usr/lib/php5/20121212/
(8)执行完成后,会显示出扩展得路径,打开php.ini, 追加memcached扩展:extension=memcached.so。 重启php服务,就可以通过phpinfo,看到memcached扩展。 sudo service php5-fpm restart
Ubuntu: sudo apt-get install libmemcached 如果报如下错误: Reading package lists... Done Building dependency tree Reading state information... Done Package libmemcached is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source E: Package 'libmemcached' has no installation candidate 添加了许多软件源依然没有解决,所以使用上边编译安装的方式安装。 php中使用memcache:系统类:addServer,addServers,getStats,getVersion。 数据类:add,set,get,delete,flush,replace,increment。 进阶类:setMulti,deleteMulti,getMulti,getResultCode,getResultMessage。 Thinkphp3.2使用memcached: 方式一:直接调用php的扩展memcached类: $mc = new \Memcached(); $mc->addServer("localhost", 11211); $mc->set("foo", "Hello!"); $mc->set("bar", "Memcached..."); $arr = array( $mc->get("foo"), $mc->get("bar") ); var_dump($arr); 方式二:调用ThinkPHP自带的 Think\Cache\Driver\Memcached.class.php类。 public function test(){ $mem_config = array( 'servers'=>[['127.0.0.1',11211]], 'prefix'=>'think', 'expire'=>3600 ); $mc = new \Think\Cache\Driver\Memcached($mem_config); //设置 $mc->set("foo3", "Hello memcached!"); //获取 $a = $mc->get("foo3"); var_dump($a); //删除 $mc->rm('foo3'); $a = $mc->get("foo3"); var_dump($a); } 方式三:使用tp的S方法,直接在控制器中使用: public function test(){ //配置memcached参数 $mem_config = array( 'type'=>'memcached', 'servers'=>[['127.0.0.1',11211]], 'prefix'=>'think', 'expire'=>3600 ); //设置缓存 S($mem_config); //设置变量 S('foo2','hello2'); //读取变量 $a = S('foo2'); var_dump($a); } 方式四:使用tp的S方法,在配置文件config.php中设置全局的缓存: //缓存配置 'DATA_CACHE_TYPE' => 'Memcached', 'MEMCACHED_SERVER' => array( array('127.0.0.1', 11211, 0) ), 'DATA_CACHE_TIME' => 3600, // 数据缓存有效期 0表示永久缓存 'DATA_CACHE_PREFIX' => 'think_', // 缓存前缀
|
2022-07-29
2022-08-19
2022-08-17
2022-11-06
2022-08-18
请发表评论