memcached 内存缓存服务器

hash一致算法

【确保sasl-devel安装包已经安装,可以使用ssl认证】

yum -y installcyrus-sasl-devel

【编译安装 libevent 事件驱动】

http://libevent.org/ 下载 libevent-2.0.20-stable.tar.gz
./configure --prefix=/usr/local/libevent
make && make install
make[3]: Entering directory`/home/libevent-2.0.20-stable/test‘
make[4]: Entering directory`/home/libevent-2.0.20-stable/test‘
make[4]: Nothing to be donefor `install-exec-am‘.
make[4]: Nothing to be donefor `install-data-am‘.
make[4]: Leaving directory`/home/libevent-2.0.20-stable/test‘
make[3]: Leaving directory`/home/libevent-2.0.20-stable/test‘
make[2]: Leaving directory`/home/libevent-2.0.20-stable/test‘
make[1]: Leaving directory `/home/libevent-2.0.20-stable‘
安装结束

【memcached-1.4.24.tar.gz】

./configure --enable-sasl --prefix=/usr/local/memcached--with-libevent=/usr/local/libevent/ 这是一行
config.status: creatingMakefile
config.status: creatingdoc/Makefile
config.status: creating config.h
config.status: executingdepfiles commands
检查通过
 make && make install
make[3]: Leaving directory`/home/memcached-1.4.24‘
make[2]: Leaving directory`/home/memcached-1.4.24‘
make[1]: Leaving directory`/home/memcached-1.4.24‘
编译安装完成

【看看帮助】

/usr/local/memcached/bin/memcached  -h

默认端口tcp udp 11211

-M            return error on memory exhausted(rather than removing items)

指定为128M 最小20字节增长因子1—2之间  详细 nobody身份运行

/usr/local/memcached/bin/memcached-m 128 -n 20 -f 1.15 -vv -u nobody
 
slab class   1: chunk size        72 perslab   14563空闲空间
【后台运行】
/usr/local/memcached/bin/memcached-m 128 -n 20 -f 1.15 -vv -u nobody -d

【看端口监听】

netstat-tunlp
[[email protected] memcached-1.4.24]# netstat-tnulp | grep "11211"
tcp       0      0 0.0.0.0:11211               0.0.0.0:*                   LISTEN      10743/memcached     
tcp       0      0 :::11211                    :::*                        LISTEN      10743/memcached     
udp       0      0 0.0.0.0:11211               0.0.0.0:*                              10743/memcached     
udp       0      0 :::11211                    :::*                                   10743/memcached

成功开启

【安装telnet】yum -y install telnet

【测试连接11211】  telnet localhost 11211

查看状态 stats

add mykey 0 30 5 添加键mykey flags为0 超时30秒 5个字符,回车输入5个字符

get mykey     看看mykey里面是什么

get mykey   30秒后再来看

<36 get mykey

>36 END

30秒后不再返回给你,但并不清理

【杀掉所有memcached进程】killall memcached

【看看还有没有】netstat –tunlp

【写一个服务脚本】

memcachedSysV的startup脚本代码如下所示,将其建立为/etc/init.d/memcached文件:
#!/bin/bash
#
# Init file for memcached
#
# chkconfig: - 86 14
# description: Distributed memory caching daemon
#
# processname: memcached
# config: /etc/sysconfig/memcached
 
. /etc/rc.d/init.d/functions
 
## Default variables
PORT="11211"
USER="nobody"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""
[ -f /etc/sysconfig/memcached ] && ./etc/sysconfig/memcachedRETVAL=0
prog="/usr/local/memcached/bin/memcached"
desc="Distributed memory caching"
lockfile="/var/lock/subsys/memcached"
 
start() {
        echo -n $"Starting $desc(memcached): "
        daemon $prog -d -p $PORT -u$USER -c $MAXCONN -m $CACHESIZE  $OPTIONS 
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] &&touch $lockfile
        return $RETVAL
}
 
stop() {
        echo -n $"Shutting down$desc (memcached): "
        killproc $prog
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] &&rm -f $lockfile
        return $RETVAL
}
 
restart() {
        stop
        start
}
 
reload() {
        echo -n $"Reloading$desc ($prog): "
        killproc $prog -HUP
        RETVAL=$?
        echo
        return $RETVAL
}
 
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        restart
        ;;
  condrestart)
        [ -e $lockfile ] &&restart
        RETVAL=$?
        ;;       
  reload)
        reload
        ;;
  status)
        status $prog
        RETVAL=$?
        ;;
   *)
        echo $"Usage: $0{start|stop|restart|condrestart|status}"
        RETVAL=1
esac
 
exit $RETVAL

【给他权限】chmod +x/etc/init.d/memcached

【开启服务】servicememcached restart

【开启是否成功】netstat -tunlp

创建给脚本传参数的文件

vim /etc/sysconfig/memcached

ORT="11211"

USER="nobody"

MAXCONN="1024"

CACHESIZE="128"

OPTIONS=""

【测试当前连接11211】  telnet localhost 11211

查看状态 stats

limit_maxbytes 67108864  就是当前的64M

vim /etc/sysconfig/memcached

改CACHESIZE="128"

service memcached restart

telnet localhost 11211

STAT limit_maxbytes134217728 就是改好的128M

OK!配置已生效

【memcached的客户端】

vim fastcgi_params看看配置好了吗

启动nginx service nginxrestart

vim nginx.conf

改一改

server {
        listen       80;
        server_name  localhost;
 
        #charset koi8-r;
 
        #access_log  logs/host.access.log  main;
 
        location / {
               root /web/htdocs;
               index index.php index.html;
        #      proxy_pass http://172.16.0.104/;
        #       if ($request_method = "PUT") {
        #       proxy_pass http://172.16.0.105;
        #               }
                }

启用php,改好路径 /web/htdocs;

location ~ \.php$ {
index index.php index.html;
             root           /web/htdocs;
             fastcgi_pass   127.0.0.1:9000;
             fastcgi_index  index.php;
             fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
             include        fastcgi_params;
         }

测试 首页  vim /web/htdocs/index.php

【访问测试http://172.16.0.102/】

【安装memcache-2.2.7.tgz 客户端】不是memcached

【执行】/usr/local/php/bin/phpize

cd memcache-2.2.7

【检查】./configure --with-php-config=/usr/local/php/bin/php-config--enable-memcache

config.status: creatingconfig.h 检查Ok

【编译并安装】make && make install

关键的路径:/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/

[[email protected]]# mkdir /etc/php.d/

[[email protected]]# vim /etc/php.d/memcache.ini

mkdir/etc/php.d

vim/etc/php.d/memcache.ini

extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/memcache.so

servicephp-fpm restart

【访问测试http://172.16.0.102/】

【继续测试】

vim/web/htdocs/test.php

<?php

$mem = new Memcache;

$mem->connect("127.0.0.1", 11211)  or die("Could not connect");

$version = $mem->getVersion();

echo "Server‘s version: ".$version."<br/>\n";

$mem->set(‘testkey‘, ‘Hello World‘, 0, 600) or die("Failed tosave data at the memcached server");

echo "Store data in the cache (data will expire in 600seconds)<br/>\n";

$get_result = $mem->get(‘testkey‘);

echo "$get_result is from memcached server.";

?>

【访问测试】http://172.16.0.102/test.php

会显示

Server‘s version: 1.4.24
Store data in the cache (data will expire in 600 seconds)
Hello World is from memcached server.

【telnet测试】

[[email protected] htdocs]#telnet localhost 11211

Trying ::1...

Connected to localhost.

Escape character is ‘^]‘.

get testkey

VALUE testkey 0 11

Hello World

END

quit

存储成功!

【配置php将会话保存至memcached中】比php保存在本机硬盘上快很多

编辑php.ini文件,确保如下两个参数的值分别如下所示:

[Session]

session.save_handler =memcache

session.save_path= "tcp://172.16.0.102:11211?persistent=1&weight=1&timeout=1&retry_interval=15"

注意改为本机IP

这是什么 session.name = PHPSESSID

cd /web/htdocs/

新建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();

?>

【测试】http://172.16.0.102/setsess.phpphp

http://172.16.0.102/showsess.php

【memadmin-master.zip】

解压  unzip memadmin-master.zip

mvmemadmin-master /web/htdocs/memaster

vim/web/htdocs/memaster/config.php 可以修改配置文件

浏览器访问 http://172.16.0.102/memaster/

默认帐号 admin

默认密码 admin

时间: 2024-08-24 11:53:11

memcached 内存缓存服务器的相关文章

memached分布式内存缓存服务器

一:memached简介 在许多高并发的应用中,把业务数据保持久化 ( 保存到数据库,磁盘文件或其它 ) 后,应用从持久化设备中读取数据并在浏览器中显示,随用户量,数据量增大,访问的集中,会出现持久化设备负担过重(典型的就是数据库),影响应用响应速度,应用延迟严重等重大问题.典型的应用就是 WEB 应用中的高并发网站. 这时候应用就需要一种缓存机制来提高并发读取速度的性能 , memcached 能在大中型系统中提供优秀的缓存服务. memcached 是高性能的分布式内存缓存服务器.一般的使用

memcached分布式缓存服务器学习总结

实验楼:https://www.shiyanlou.com/ 以下学习总结主要通过实验楼环境 memcached:高速运行的分布式缓存服务器 特点:(1)协议简单(2)基于libevent的事件处理(3)内置内存存储方式(4)不互相通信的分布式 适用场景:(1)网站包含了访问量很大的动态网页,因而数据库的负载将会很高,且大部分数据库请求都是读操作.(2)数据库服务器的负载比较低,CPU使用率较高;(3)小型需要共享的数据,如session等临时数据:(4)缓存一些很小但是被频繁访问的文件. 不适

利用memcached做缓存服务器,为后端tomcat服务器做会话保持,利用httpd的jk模块模块做负载均衡

前端使用httpd作为反代负载均衡至后端tomcat主机:tomcat可用memcached当做会话服务器保存会话: 实验环境:物理机win7,虚拟机centos7 node1:172.18.11.111 TomcatA node2:172.18.11.112 TomcatB node3:172.18.11.113 调度器httpd 安装tomcat 分别在node1和node2安装tomcat: ]# yum -y install java-1.7.0-openjdk java-1.7.0-o

Memcached:高性能的分布式内存缓存服务器

特征: u 协议简单: n 基于文本行的协议 u 基于libevent的事件处理: n 程序库,能实现连接数的增加,O(1)性能 u 内置内存存储方式 n 数据存储在内存,重启数据消失,在数据达到某个值时,基于LRU(Last Recently Used)算法删除不使用的缓存 u Memcached互不通信的分布式 n 服务器端没有分布式功能,实现分布式取决于客户端 n  Memcached的使用: u 保存的方法: n add:仅当存储空间不存在相同的数据才保存 n replace:仅当存储空

服务器后端开发系列——《实战Memcached内存缓存系统》

1.实战Memcached缓存系统(1)Memcached基础及示例程序 内容:建筑Memcached背景知识和入门示例程序. 2.实战Memcached缓存系统(2)Memcached Java API基础之MemcachedClient 内容:以Memcached的Java Spy API为例,讲述基本的客户端使用. 3.实战Memcached缓存系统(3)Memcached配置参数初解 内容:提供Memcached配置的初步解读. 4.实战Memcached缓存系统(4)Memcached

Memcached内存缓存及其监控工具MemAdmin

memcached 简介 memcached 简介Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像.视频.文件以及数据库检索的结果等.简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度.memcached是一个开源的.高性能的,具有分布式内存对象的缓存系统.memcached是通过在事先规划好的内存空间中缓存数据库中的数据,达到减少数据库的高并发访问,从而达到提升数据库的访问性能,加速动

memcached分布式缓存服务器学习总结(二)memcached状态查询

linux memcached状态查询如何查看memcached服务器端版本: ./memcached -h memcached的运行状态可以方便的用 stats 命令显示. 首先用telnet 127.0.0.1 11211这样的命令连接上memcache,然后直接输入stats就可以得到当前memcache的状态. 这些状态的说明如下: pid memcache服务器的进程IDuptime 服务器已经运行的秒数time 服务器当前的unix时间戳version memcache版本point

高效缓存服务器Memcached(一)

一.Memcached 1.memcached 是什么 Memcached是一款开源.高性能.分布式内存对象缓存系统,可应用各种需要缓存的场景,其主要目的是通过降低对Database的访问来加速web应用程序.它是一个基于内存的"键值对"存储,用于存储数据库调用.API调用或页面引用结果的直接数据,如字符串.对象等.Memcached是以LiveJournal旗下Danga Interactive 公司的Brad Fitzpatric 为首开发的一款软件.现在已成为mixi.haten

memcached 缓存服务器

Memcached 缓存服务器 Memcached 是高性能的分布式内存缓存服务器. 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态web应用的速度.提高可扩展性. 主要特点: 1.C/S架构,协议简单: 2.基于libevent的事件处理(epoll): 3.Slab Allocation内存管理机制: 4.基于客户端的分布式: Memcached中保存的数据都在内存中,因此重启memcached,会导致全部数据丢失: 另外,内存容量达到指定值之后,就基于LRU(Le