Memcache如何安装

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Memcache如何安装相关的知识,希望对你有一定的参考价值。

问题如题

1、将下载的memcached.exe文件放到磁盘固定的地方,不要删除。打开开始菜单,在输入框里输入cmd按回车。

2、在出现的弹出窗中输入c:\\memcached\\memcached.exe -d install。

3、再输入: \'c:\\memcached\\memcached.exe -d start\' 启动。NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。

4、查看服务是否开启,在开始菜单中输入框中输入services.msc。

5、在弹出的窗口中查找memcached服务,如图所示:

6、下载php_memcache.dll,请自己查找对应的php版本的文件,找到php配置文件php.ini加入一行 \'extension=php_memcache.dll\'。

7、查看模块是否安装:

新建一个.php文件,输入以下代码运行即可。

<?php

phpinfo();

?>

注:有的应该会有phpinfo.php文件,直接运行即可。

在出现的网页里面找memcache模块。如图所示。

参考技术A 早就听说memcached是一个不错的分布式内存缓存系统,做了些功课想把这memcache用到实际当中来.因为一个好的缓存系统,能给web应用带来不小的性能提升.做了一些功课之后,做了下面几点总结:

memcache适合与web server安装在同一server上
memcache可以在n个端口开n个进程,如果和web server在同一机器的话,还能减少网络开销.
配置简单,启动一个进程就行了,免去了配置文件
我更关心的是,memcache的分布式应用应该如何部署.带着这个问题,我在各搜索引擎上做了进一步的功课.最初找到的办法是,首先启动n个memcache进程,这些进程可以在不同的server的不同端口上.

然后使用perl的api可以方便的一次链接多个memcache,存储读取机制不明.不久找到php的一个MemcachedClient类,基本上就是perl里api的再实现.它使用的fscokopen或者socket系列function来直接读取memcache----这说明只要清楚memcache的网络协议,你甚至不用装什么php的memcache extenstion.看了这个类的实现,基本上弄清楚,它的分布式应用差不多就是将不同的key保存在不同的memcache daemon,不会保留多个副本,也就不存在多memcache同步的问题了.

过了不久俺又有发现,在最新的php手册上找到了memcache::addServer()这方法,它就是为分布式应用而产生的,有了这个支持的话,php的代码就更简单:

PLAIN TEXTPHP: <?php
$memcache_obj = new Memcache;
$memcache_obj->addServer('memcache_host', 11211);
$memcache_obj->addServer('failed_host', 11211);

$stats = $memcache_obj->getExtendedStats();
print_r($stats);
?>

看来php手册也要与时俱进啊,最好是能够直接使用英文版,否则也不会走这么多弯路了:)

如何在 symfony 中使用 Memcache

【中文标题】如何在 symfony 中使用 Memcache【英文标题】:how to use Memcache with symfony 【发布时间】:2017-08-18 07:18:34 【问题描述】:

我使用 symfony 2,我想使用 Memcache,但问题是我找不到任何关于 Memcache 的解释,我刚刚为 memcached 找到了,所以它们的设置步骤相同吗?我添加了这一行来在 symfony 上安装 Memcache?

config.yml

framework:
  session:
    handler_id: session.handler.memcached

对于parameters.yml

parameters:   
  memcached_host: 127.0.0.1
  memcached_port: 11211
  memcached_prefix: custom_key_
  memcached_expire: 14400

services.yml

services:
  session.handler.memcached:
    class: Symfony\Component\HttpFoundation\Session\Storage\Handler\MemcachedSessionHandler
    arguments: [ "@session.memcached",  prefix: '%memcached_prefix%', expiretime: '%memcached_expire%'  ]


services:
  session.memcached:
    class: Memcached
    arguments:
      persistent_id: %memcached_prefix%
    calls:
      - [ addServer, [ %memcached_host%, %memcached_port% ]]



services:
  session.memcached:
    class: Madisoft\AppBundle\Utils\MemcachedWrapper
    arguments:
      persistent_id: '%memcached_prefix%'
    calls:
      - [ addServer, [ '%memcached_host%', '%memcached_port%' ] ]

【问题讨论】:

【参考方案1】:

只有一个Memcached 软件,它是https://memcached.org/ 提供的那个。

Memcached 有两个著名的 PHP 库,分别称为 memcache (http://php.net/manual/en/book.memcache.php) 和 memcached (http://php.net/manual/en/book.memcached.php),所以这可能是您的困惑所在。

要将Memcached 与 Symfony 2 一起使用,我建议使用 LeaseWeb 提供的外部包,它提供了所有必需的文档:https://github.com/LeaseWeb/LswMemcacheBundle。

从 Symfony 3.3 开始会有一个原生的Memcached 适配器:参见http://symfony.com/blog/new-in-symfony-3-3-memcached-cache-adapter。

【讨论】:

【参考方案2】:

我使用的是 Symfony 3.4,这是我的 config.yml:

parameters:
    session_memcached_host: localhost
    session_memcached_port: 11211
    session_memcached_prefix: sess
    session_memcached_expire: 100 # this is in seconds

framework:
    session:
        handler_id: session.handler.memcached

和 services.yml:

services:
    session.memcached:
        class: Memcached
        arguments:
            # Just remember to comment out below line or even remove whole arguments section
            # persistent_id: %session_memcached_prefix%
        calls:
            - [ addServer, [ %session_memcached_host%, %session_memcached_port% ]]

    session.handler.memcached:
        class:     Symfony\Component\HttpFoundation\Session\Storage\Handler\MemcachedSessionHandler
        arguments: ["@session.memcached",  prefix: %session_memcached_prefix%, expiretime: %session_memcached_expire% ]

通过上述配置,我将会话存储在 Memcached 服务器中(准确地说是 AWS ElasticCache Memcached)。

如果你想玩 Memcached,这里是我用来存储我的自定义数据的:

use Symfony\Component\Cache\Adapter\MemcachedAdapter;

$client = MemcachedAdapter::createConnection('memcached://localhost');
$cache  = new MemcachedAdapter($client, $namespace = '', $defaultLifetime = 0);
$item   = $cache->getItem('itemName');

if (!$item->isHit()) 
    // Item does not exist
    $item
        ->set($data)
        ->expiresAfter(10) // in seconds
    ;
    $cache->save($item);
 else 
    // Item exists
    $cachedItem = $item->get();

我希望这会有所帮助。

【讨论】:

如果我想在每个会话中存储一些东西怎么办?您的最后一个示例存储了每个用户都可以获得的数据。如果我想为每个用户存储数据(就像本机会话所做的那样)怎么办?如果用户不发送 PHPSESSID 会怎样?

以上是关于Memcache如何安装的主要内容,如果未能解决你的问题,请参考以下文章

如何:在 XAMPP 上安装 Memcache (Windows 7/8/10)

如何安装php memcache的拓展

如何安装Windows版Memcache

如何在Ubuntu 12.04上安装和使用Memcache

如何修改memcache内存大小

如何在Centos的linux操作系统安装php的memcache扩展