membercached 的应用

来源:互联网 发布:漫威电影观看顺序知乎 编辑:程序博客网 时间:2024/06/07 05:09

1、问题?

   web应用中都是将数据保存在RDBMS中的,应用程序从中读取数据然后在浏览器中显示的,但是在大数据量的网站中,用户量的增加和访问的集中会增加RDBMS系统的负担,数据库响应就会恶化,数据延迟等重大影响,另外数据不经常变的数据

2、

   是高性能的分布式内存缓存服务器管理软件。一般的使用目的是,通过缓存数据库查询结果,减少数据的访问次数,以提高动态web应用的速度,提高可扩展性。但是因为数据是存储到内存中的,所以内存缓存服务器宕机数据丢失。

   原理:

       1、检查客户端的请求数据,是否在中,如果有就直接返回数据,不再对数据库进行任何操作。

 2、如果请求的数据不在中,就去查询数据库,把数据库中获取的数据返回给客户端,同时把数据使用程序缓存一份到中。

 3、每次更新数据库的同时更新中的数据,保证一致性。

 4、当分配给内存空间用完后,会使用LRU(最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后替换掉最近未使用的数据。

3、内存存储方式:

   在计算机中,内存分配形式分为预先分配和动态分配,预先分配内存速度比较快,而动态分配比较节省资源,但是效率比较低。因此的内存分配是基于以上两种原理。显然,我们既然是为了大数据访问,获得更快的速度,我们有时候不得不以空间换时间(以资源换时间)。

   的高性能源于两端哈希结构,就是一个巨大的,存储了很多<keyvalue>对的哈希表(图片,文件,数据等),通过hash(key)值,我们可以存储和查询任何数据,使用的协议是文本行的协议。如下:(498是由key使用哈希算法函数计算的数据地址)   uname = tom

   Uname => 34654323432

   前一个addr   名字   数据    下一个addr

   11            uname  tom    102

   102            age     20     13

    

    注意:如果进行分布式数据缓存,单台服务器数据获取机制可以帮助我们自动寻找,但是,服务器选择时,就需要人工操作,编写选中规则。

 

 

 

4、Windowsd安装配置:

  1、根据自己电脑选择版本安装mamcached

     32bit:d-win32-1.4.4-14.zip

     64bit: d-win64-1.4.4-14.zip

  2、解压后将解压的文件夹命名d,放到和php同级目录下

  3、d安装;

     使用cmd找到d目录安装命令

          d.exe -d install

     使用cmd命令开启mamcache服务

          d.exe -d start

     使用cmd命令重启mamcache服务

          d.exe  -d restart

     使用cmd命令关闭mamcache服务器

       d.exe  -d shutdown

     使用cmd命令卸载mamcache

          d.exe  -d unstall

     注意:服务器开启后可以在任务管理器进程中找到mamcached服务。

 4、php扩展设置:

     根据php版本下载相对应的mamcached扩展

     64位电脑:  php_-3.0.8-5.5-ts-vc11-x64.zip

     32位电脑:  php_-3.0.8-5.5-ts-vc11-x86

1) 将php_mamcache.dll 文件复制到php扩展目录ext下

2) 在php.ini文件中添加一行

   Extension=php_mamcache.dll

3) 重启apache服务器。在phpinfo中能看到。

   注意:memcache和d区别:

   在服务器安装的软件叫做 d软件,用于内存管理。

   php中有两种memcache扩展:

libMemcache扩展库是由php官方提供的

   (稳定性较好,更新较快,我们使用这种,将协议封装好,我们直接调用接口)。

libmamcached扩展苦是由mamcached官方提供的

        更新不快,稳定不好,且是tcp协议的操作。是在mamcache基础上开发的。

5、PHP操作mamcache。

  [1] 连接服务器

  [2] 执行操作

  [3]关闭服务器

   $memcache = new Memcache;

  5.1)Memcache链接

       $memcache ->Connect($host,$port,$timeout)

       Host:服务器名,ip地址

       Port:端口号,默认端口是11211

      返回值:返回一个memcache连接

  5.2)mamcache关闭;

       $mamcache ->Close(void)

       mem1.php】

  5.3) 给内存设置值:

      $mamcache -> set($key,$var[,$flag[,$expire]]);

      $key:设置的mamcache键值。用于mamcache对应数据的标示。

      $var: 存储的数据

      $expire: 以秒为单位设置的失效时间。

      $flag:如果你设置的值经过zlib压缩的,可以设置MEMCACHE_COMPRESSED

  5.4) 从服务器端捡回一个元素值。

       $mamcache -> get($key,$flag)

       $key:获取某个元素标示字符串或者元素标示数组

       $flag:是否压缩和序列化

             0:未经过压缩和序列化

             1:经过序列化但未压缩

             2:经过压缩但未序列化

             3:经过压缩并序列化

   5.5) 返回服务器信息:

        $mamcache -> getStats();

   5.6) 增加一个条目:add只有不存在这个key时才添加一个key-value数据

        $mamcache -> add($key,$var[,$flag[,$expire]]);

        $key:设置的mamcache键值。用于mamcache对应数据的标示。

        $var: 存储的数据

        $expire: 以秒为单位设置的失效时间。

        $flag:如果你设置的值经过zlib压缩的,可以设置_COMPRESSED

   5.7) 替换一个条目:只有条目存在时,才替换。

        add只有不存在这个条目时才添加一个条目。

        $mamcache -> replace($key,$var[,$flag[,$expire]]);

        $key:设置的mamcache键值。用于mamcache对应数据的标示。

        $var: 存储的数据

        $expire: 以秒为单位设置的失效时间。

        $flag:如果你设置的值经过zlib压缩的,可以设置_COMPRESSED

   5.8) 删除一个条目:

        $mamcache -> delete($key,$timeout);

        $key:删除的条目标示.

        $timeout: 过期时间。

5.9) 增加和减少一个元素值:

    $mamcache -> increment($key,$value):将mamache中的值增加value

    $mamcache -> decrement($key,$value):将mamcache中的值减少value

5.10) 清除所有的已经存储的元素:

    $ -> flush();

5.11)  获取服务器信息:

    $ -> getStatus()

5.12) 连接池:会自动根据算法将缓存的数据分配到不同的mamcache中。

    $ -> addserver($host,$port,$pconent);

        增加一台服务器到链接池中,如果一台宕机,其他可以立马零错误使用缓存。一般大数量,高并发网站中使用连接池。

   $ ->getServerStatus($hos,$port):切换备用服务器时用于判断,0代表离线,非零代表在线。

   $ -> getExtendedStatus():返回连接池中所有的服务器信息。

   mem4.php】

6、TP框架中使用:

   6.1TP配置:

        找到confg-> convention.php文件

   'DATA_CACHE_TYPE'       =>  '',

   存放位置为: Think/cache/drivers/下;

  6.2) 配置初始化:

   S(array(

    'type'=>'',

    'host'=>'192.168.1.10',

    'port'=>'11211',

    'prefix'=>'think',

    'expire'=>60)

);

6.3、设置值

    S(“key”,”value”)

6.4、获取值:

S(“key”);

6.5、删除值:

    S(“key”,null);

原创粉丝点击