1.Memcached键值对访问,对于网页来说,key需要使用uri。

2.Memcached的相关配置

memcached:缓存服务器,但本身无法决定缓存任何数据
一半依赖于客户端,一半依赖于服务端
memcached最小缓存48bytes,最大缓存1MB buddy system:伙伴系统
避免内存外碎片,页面之间的碎片整合
slab allocate:slab分配器
避免内存内碎片,小于页面单位(4K)的数据结构中,提前分配好这些小的单元,这些小的单元不会回收。slab为所有的需要的结构都定义了。
memcached也是按照这样来使用的。最小48bytes,使用增长因子来定义growth factor。
48bytes:slab class,slab chunk
80bytes
memcached:分布式缓存服务器
一致性哈希算法:设置一个环,数据为1-2^32,采用HASH算法,均衡放置几台服务器在这个环上,每次获取的数据都按照顺时针取环上临近服务器。 http://memcached.org/
采用事件驱动的形式,需要安装lib-event模块:http://libevent.org/
./configure --prefix=/usr/local/libevent
make && make install
./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
make && make install memcached关键参数:
-p: TCP port,11211
-m: 以M为单位指定memcached可以使用的最大内存空间,默认64MB
-c: 最大支持的并发连接数,默认为1024
-t: 处理入站请求的最大线程数,仅在memcached编译时开启了支持线程才有效
-f: 设定slab allocator定义预分配的增长因子
-M:当内存空间不够使用时返回错误信息,而不是按LRU算法利用空间
-n: 最小存储单位是多大slab trunk,默认是48bytes,可以设置比48bytes小
-S:启动SASL进行用户认证
-d: 运行在后台

     Memcached的启动:
/usr/local/memcached/bin/memcached -m 128 -n 20 -f 1.1 -vv -u nobody -d
netstat -tunlp add mykey 0 30 5
hello
STORED
get mykey
VALUE mykey 0 5
hello
END memcached客户端,就是telnet交互
memcached客户端库:
php
memcache
memcached
c\c++
libmemcached
memcached的图形化管理工具
memadmin http://www.php.net/downloads.php

3.下载memcache的客户端程序http://pecl.php.net/get/memcache-2.2.4.tgz

  解压执行

[root@nginx memcache-2.2.4]# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20151012
Zend Module Api No: 20151012
Zend Extension Api No: 320151012

  后来在安装过程中发现memcache在php7的版本中有str和string的变化,故而不用memcache这个版本了,改用memcached。

  github上的链接为https://github.com/php-memcached-dev/php-memcached,选择的时候注意branch要选择php7

  要安装php-memcached-php7需要先安装libmemcached,http://libmemcached.org/libMemcached.html

  编译安装libmemcached-1.0.18的时候报错

libmemcached/auto.cc: In function 'memcached_return_t text_incr_decr(memcached_server_st*, bool, const char*, size_t, uint64_t, bool)':
libmemcached/auto.cc:73: error: expected `)' before 'PRIu64' In file included from ./libmemcached/common.h:72,
from ./libmemcached/csl/common.h:40,
from libmemcached/csl/context.cc:38:
./libmemcached-1.0/memcached.h:46:27: error: tr1/cinttypes: No such file or directory

  原因是gcc的版本过低了,需要升级版本

# yum install gcc44 gcc44-c++ libstdc++44-devel

# export CC=/usr/bin/gcc44
# export CXX=/usr/bin/g++44
# ./configure

  安装好libmemcached之后,重新编译安装php-memcached-php7

[root@nginx php-memcached-php7]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached --disable-memcached-sasl
make && make install

 [root@nginx php-memcached-php7]# make install
 Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/

  至此memcached for php7的客户端安装成功,记录下安装路径,/usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/。

  修改配置文件,在编译的时候指定的路径/usr/local/php/etc/目录下面的php.ini文件中添加一行:

extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/memcached.so"

  然后使用/usr/local/php/sbin/php-fpm -m可以查看到memcached模块,访问index.php,查看到memcached组件。

4.在/etc/init.d/下添加memcached的启动脚本

#!/bin/bash

. /etc/rc.d/init.d/functions

PORT="11211"
USER="nobody"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="" [ -f /etc/sysconfig/memcached ] && . /etc/sysconfig/memcached RETVAL=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
;;
reload)
reload
;;
esac
exit $RETVAL

  添加到服务启动中去,需要在!#/bin/bash中添加下面两行

# chkconfig: 2345 10 90
# description: memcached service .... chkconfig --add memcached

  

  

Memcached安装配置及访问的更多相关文章

  1. Asp.Net Memcached安装配置使用、安全性

    Memcached安装配置使用  一,准备        你需要有一下软件:       VS.NET(05/08)       SQLSERVER       memcached服务器端以及客户端类 ...

  2. Memcached安装配置最大使用内存

    Memcached安装配置最大使用内存 项目做了很多,虽然用memcached的项目也有很多.但是没有太关注安装memcached细节问题 最近做了一个项目,把很多东西都放到memcached缓存中, ...

  3. openstack Q版部署-----Mysql、MQ、Memcached安装配置(2)

    一.安装mysql(contorller) 安装软件包: yum install -y mariadb mariadb-server python2-PyMySQL 配置my.cnf文件 vi /et ...

  4. openstack 部署(Q版)-----Mysql、MQ、Memcached安装配置

    一.安装mysql yum install -y mariadb mariadb-server python2-PyMySQL 配置my.cnf文件 vim /etc/my.cnf [mysqld] ...

  5. Nginx (安装+ 配置域名+ 访问认证 +发布文件)

    一.Nginx介绍: Nginx是一款高性能的HTTP和反向代理服务器,能够选择高效的epoll(linux2.6内核).kqueue(freebsd).eventport(solaris10)作为网 ...

  6. memcached安装配置

    简述: memcached,开源的分布式缓存数据系统.高性能的NOSQL . Linux 一.环境配置与安装 01.编译准备环境 yum install -y gcc make cmake autoc ...

  7. memcached安装配置+基础操作

    先安装依赖关系 下载libevent-2.0.21-stable.tar.gz wget https://github.com/downloads/libevent/libevent/libevent ...

  8. Memcached 安装配置

    安装: memcached -d install memcached -d start net start "Memcached Server" 卸载: memcached -d ...

  9. Windows和Linux环境下Memcached安装与配置(转)

    一.memcached安装配置 windows平台安装 1.memcached-1.2.6-win32-bin.zip下载地址: http://code.jellycan.com/memcached/ ...

随机推荐

  1. T-SQL中的随机数

    SQL开发中会有生成随机数的需求,下面说几种常用的需求和解决办法(基于MS SQL),最后总结出通用的办法: 1.0-9间的随机整数,包括0和9本身: abs(checksum(newid()))%1 ...

  2. 简单的聊天室代码php+swoole

    php swoole+websocket 客户端代码 <!DOCTYPE html> <html> <head> <title></title&g ...

  3. 黄聪:GeckoFX如何引用jquery文件并执行自定义JS

    var jquery_script = gwb.Document.CreateElement("script"); jquery_script.SetAttribute(" ...

  4. ORM框架详解

    .Net开源微型ORM框架测评 什么是ORM? 对象关系映射(英语:Object Relation Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象 ...

  5. SOAP(简单对象访问协议)

    ylbtech-Miscellaneos:SOAP(简单对象访问协议) A,返回顶部 1, 简单对象访问协议是交换数据的一种协议规范,是一种轻量的.简单的.基于XML(标准通用标记语言下的一个子集)的 ...

  6. jquery “做页面滚动到某屏时改变状态标题” 所用知识点记录

    浏览器滚动条滚动时触发事件 //浏览器滚动条滚动时触发事件 $(window).scroll(function(){}); 浏览器窗口大小改变时触发事件 //浏览器窗口大小改变时触发事件 $(wind ...

  7. javascript中日期格式与时间戳之间的转化

    日期格式与时间戳之间的转化 一:日期格式转化为时间戳 function timeTodate(date) { var new_str = date.replace(/:/g,'-'); new_str ...

  8. C语言scanf函数详细解释

    原文链接 函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化输入函数,它从标准 ...

  9. Laravel学习笔记(四)数据库 数据库迁移案例

    创建迁移 首先,让我们创建一个MySql数据库“Laravel_db”.接下来打开app/config目录下的database.php文件.请确保default键值是mysql: return arr ...

  10. XE6 & IOS开发之开发者账号、苹果证书(3):关于在XE6中使用苹果证书的简单介绍

    网上能找到的关于Delphi XE系列的移动开发的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 1.关于在XE6中使用苹 ...