memcache安装和使用

合集下载

Memcache客户端注册与使用

Memcache客户端注册与使用
Memcache客户端安装与使用
一:客户端安装
二:客户端常用方法的使用
一:客户端安装
• 1.客户端组件的注册
• 2.客户端配置
一:客户端安装
• 1. VBScript客户端组件的注册 • 首先安装framework2.0 • 将ZhaoPin.Memcached.dll和 ZhaoPin.Memcached.tlb文件复制到本地。 • 打开命令行控制台窗口,输入cd C:\WINDOWS\\Framework\v2.0.50 727 • 回车后输入regasm c:\ ZhaoPin.Memcached.dll/ tlb: ZhaoPin.Memcached.tlb /codebase 回车
二:客户端常用方法的使用
• • • • • • • • • • 1.VBScript的使用 首先,创建服务器对象 dim mc set mc = server.CreateObject(".MCClient") 该对象的方法有以下: 1.设置键值Set 2.新增键值Add 3.替换键值Replace 4.追加键值Append, Prepend 5.删除键值Delete , FlushAll
二:客户端常用方法的使用
• C#调用组件不需要注册,将 ZhaoPin.Memcached.dll放入bin目录,直接引用 • 需要配置文件 • C:\memcachedconfig\cached.config • 使用方法示例: • .MCClient m = new .MCClient(); • m.Set("a", "1"); • m.Prepend("a", "2"); • m.Delete("a");

Memcached安装使用

Memcached安装使用

Memcached安装使用1.Memcached安装下载地址:/p/memcached/downloads/list1.1. 安装libevent# tar zxvf libevent-2.0.19-stable.tar.gz# cd libevent-2.0.19-stable# ./configure --prefix=/usr/local/libevent# make# make install1.2. 安装memcached# tar zxvf memcached-1.4.13.tar.gz# cd memcached-1.4.13# ./configure --with-libevent=/usr/local/libevent –-enable-threads --prefix=/usr/local/memcached# make# make install2.Memcached 运行2.1. 运行memcached# ./memcached -d -u root -m 1024 -P /opt/memcached/pid/memcached11211.pid –C -v2.2. 启动参数说明•启动方式:•-d 以守护程序(daemon)方式运行•-u root 指定用户,如果当前为root ,需要使用此参数指定用户•-P /tmp/a.pid 保存PID到指定文件•内存设置:•-m 1024 数据内存数量,不包含memcached本身占用,单位为MB •-M 内存不够时禁止LRU,报错•-n 48 初始chunk=key+suffix+value+32结构体,默认48字节•-f 1.25 增长因子,默认1.25•-L 启用大内存页,可以降低内存浪费,改进性能•连接设置:•-l 127.0.0.1 监听的IP地址,本机可以不设置此参数•-p 11211 TCP端口,默认为11211,可以不设置•-U 11211 UDP端口,默认为11211,0为关闭•并发设置:•-c 1024 最大并发连接数,默认1024,最好是200•-t 4 线程数,默认4。

网站大访问量缓存技术之memcache的安装和使用

网站大访问量缓存技术之memcache的安装和使用

网站大访问量缓存技术之memcache的安装和使用知识点:一、memcachemem 内存cache 缓存网页的静态化--》文件缓存。

memcache 内存来作为缓存。

管理内存中的数据。

大中型项目。

1。

作用:用来缓存数据。

数据库临时存储数据的地方,刷新或重启(关机)。

数据就没有了2 优势:数据写入内存,访问速度将加快。

3 memcache 的安装和配置。

memcached.exe 执行可以安装memcache.php_memcache.dll php的扩展库文件。

---》php5.n版本5.2+安装:1 检查以前是否装过memcache控制面板--》管理工具---》服务--》memcache选项。

(没有,没装过);2 安装:memcached.exe -d install3 启动:memcached.exe -d start注意:memcache 内存管理,在杀毒软件下,最好把保护功能暂时先停掉。

4 卸载:需要进服务当中先把mamcache停止掉。

memcached.exe -d unistall5 应用:mysql 3306默认。

memcache 11211 默认。

memcached.exe -d 【参数】installstartuninstallrestart 重启stop 停止memcache服务。

php---》memcache 配置1》php_memcache.dll 文件拷贝php/ext/php_memcache.dll2》php.ini文件:在extension 列表最后一行添加以下代码。

extension=php_memcache.dll --》启动memcache 扩展库。

需要重启apache.6 php使用memcache1>$mem = new Memcache; //实例化内存管理对象memcache的对象。

2>php连接memcache;$mem->connect("主机名称",端口号); 成功返回true 失败false3>memcache add("变量名称","值");$mem->add();4>从内存中取出数据:$mem->get(变量名称);mem 存储数据和数组没有问题。

MemCached安装与配置图解(windows)

MemCached安装与配置图解(windows)

MemCached安装与配置图解(windows)Windows 7 64bit 环境下安装memcached1、下载后解压到D:\memcached(下载地址:memcached-win64下载地址)2、安装到windows服务,打开cmd命令行,进入memcached目录,执行memcached -d install命令,安装服务。

*若在没有安装过的情况下,出现"failed to install service or service already installed"错误,可能是cmd.exe需要用管理员身份运行。

3、启动服务,执行memcached -d start4、参数介绍-p 监听的端口-l 连接的IP地址, 默认是本机-d start 启动memcached服务-d restart 重起memcached服务-d stop|shutdown 关闭正在运行的memcached服务-d install 安装memcached服务-d uninstall 卸载memcached服务-u 以的身份运行 (仅在以root运行的时候有效)-m 最大内存使用,单位MB。

默认64MB-M 内存耗尽时返回错误,而不是删除项-c 最大同时连接数,默认是1024-f 块大小增长因子,默认是1.25-n 最小分配空间,key+value+flags默认是48-h 显示帮助5、修改参数,windows下需要通过修改注册表信息进行设置,在CMD下,打开注册表(regedit),Ctrl+F 查找 memcached找HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached 在其中有一个“ImagePath”项,值为:"D:\memcached\memcached.exe" -d runservice在后面加上“-m 1024 -c 2048 -p 11210”。

memcached 手册

memcached 手册

memcached 手册Memcached是一个高性能的开源内存对象缓存系统,被广泛地应用于提升网站和应用程序性能。

该手册将介绍Memcached的基本概念、安装配置、常用命令以及最佳实践等关键内容,旨在帮助读者快速了解和使用Memcached。

一、Memcached概述Memcached可以看作是一个分布式的缓存系统,它将数据缓存在内存中,并提供了简单的键值对存取接口。

相比于传统的关系型数据库,Memcached具有更快的读写速度和更高的并发能力,因为它直接操作内存而避免了磁盘I/O。

此外,Memcached采用了多台服务器的分布式架构,能够提供横向扩展的能力。

二、安装与配置1.下载和安装:Memcached可以从官方网站或其他镜像站点下载安装包,并根据相应平台的指引进行安装。

安装完成后,可以通过运行"memcached"命令来启动Memcached服务。

2.配置文件:Memcached的默认配置文件是"memcached.conf",可以通过修改该文件中的参数来调整Memcached的行为。

主要的配置项包括监听端口、最大连接数、内存容量等。

三、常用命令1.存储数据:用"set"命令可以将键值对存入Memcached中,例如:"set key 0 3600 5"表示存储一个key为"key",值为"0",并设置过期时间为3600秒。

如果要存储的值超出了内存容量限制,旧的数据将会被替换。

2.获取数据:用"get"命令可以从Memcached中获取指定键对应的值,例如:"get key"可以获取到之前存储的值。

如果该键不存在,返回结果将是"END"。

3.删除数据:用"delete"命令可以从Memcached中删除指定键对应的值,例如:"delete key"可以删除之前存储的值。

Memcached配置文档

Memcached配置文档

一.Memcached服务端的安装:1. 将memcached-1.2.1-win32.zip(也可以下载),解压放某个盘下面,比如在c:\memcached2. 在终端(也即cmd命令界面)下输入c:\memcached\memcached.exe -d install--安装memcached成为服务,这样才能正常运行,否则运行失败!3. 再输入:c:\memcached\memcached.exe -d start --启动memcached的。

二.Memcached客户端的安装1.解压java_memcached-release_2.0.1.zip,将里面的java_memcached-release_2.0.1.jar拷贝到WEB_INF/lib中2.在src目录下新建一个dhcache.xml文件,内容如下:<ehcache><diskStore path="java.io.tmpdir" /><defaultCache name="default" maxElementsInMemory="300" eternal="false"timeToIdleSeconds="500" timeToLiveSeconds="500" overflowToDisk="true"diskPersistent="false" diskExpiryThreadIntervalSeconds="110" /><cache name="org.taha.cache.LOCAL_CACHE" maxElementsInMemory="300"eternal="false" timeToIdleSeconds="500" timeToLiveSeconds="500"overflowToDisk="true" /></ehcache>3.创建一个类,用来封装memcache的各种操作(连接,添加,删除,关闭等)public class CacheService{private Cache localCache;String cacheServerList;String cacheServerWeights;boolean cacheCluster = false;int initialConnections = 10;int minSpareConnections = 5;int maxSpareConnections = 50;long maxIdleTime = 1000 * 60 * 30; // 30 minuteslong maxBusyTime = 1000 * 60 * 5; // 5 minuteslong maintThreadSleep = 1000 * 5; // 5 secondsint socketTimeOut = 1000 * 3; // 3 seconds to block on readsint socketConnectTO = 1000 * 3; // 3 seconds to block on initialboolean failover = false; // turn off auto-failover in event of server// downboolean nagleAlg = false; // turn off Nagle's algorithm on all sockets in// poolMemCachedClient mc;public CacheService(){mc = new MemCachedClient();mc.setCompressEnable(false);}public void setLocalCache(Cache localCache){this.localCache = localCache;}public void setCacheServerList(String cacheServerList){this.cacheServerList = cacheServerList;}public void setCacheServerWeights(String cacheServerWeights){this.cacheServerWeights = cacheServerWeights;}public void setCacheCluster(boolean cacheCluster){this.cacheCluster = cacheCluster;}/*** 放入**/public void put(String key, Object obj){if (this.cacheCluster){mc.set(key, obj);} else{Element element = new Element(key, (Serializable) obj);localCache.put(element);}}/*** 删除*/public void remove(String key){if (this.cacheCluster){mc.delete(key);} else{localCache.remove(key);}}/*** 得到*/public Object get(String key){Object rt = null;if (this.cacheCluster){rt = mc.get(key);} else{Element element = null;try{element = localCache.get(key);} catch (CacheException cacheException){throw new DataRetrievalFailureException("Cache failure: "+ cacheException.getMessage());}if (element != null)rt = element.getV alue();}return rt;}/*** 判断是否存在**/public boolean exist(String key){if (this.cacheCluster){return mc.keyExists(key);} else{return this.localCache.isKeyInCache(key);}}private void init(){if (this.cacheCluster){String[] serverlist = cacheServerList.split(",");//Integer[] weights = this.split(cacheServerWeights);String[] temps = cacheServerWeights.split(",");Integer[] weights = new Integer[temps.length];for (int t = 0; t < temps.length; t++){weights[t] = new Integer(temps[t]);}// initialize the pool for memcache serversSockIOPool pool = SockIOPool.getInstance();pool.setServers(serverlist);pool.setWeights(weights);pool.setInitConn(initialConnections);pool.setMinConn(minSpareConnections);pool.setMaxConn(maxSpareConnections);pool.setMaxIdle(maxIdleTime);pool.setMaxBusyTime(maxBusyTime);pool.setMaintSleep(maintThreadSleep);pool.setSocketTO(socketTimeOut);pool.setSocketConnectTO(socketConnectTO);pool.setNagle(nagleAlg);pool.setHashingAlg(SockIOPool.NEW_COMPA T_HASH);pool.initialize();}}private void destory(){if (this.cacheCluster){SockIOPool.getInstance().shutDown();}}}4.Spring配置文件中配置memcache<bean id="cacheManager"class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"><property name="configLocation"><value>classpath:ehcache.xml</value></property></bean><bean id="localCache"class="org.springframework.cache.ehcache.EhCacheFactoryBean"><property name="cacheManager"><ref local="cacheManager" /></property><property name="cacheName"><value>org.taha.cache.LOCAL_CACHE</value></property></bean><bean id="cacheService" class="ercenter.services.CacheService" init-method="init" destroy-method="destory"><property name="cacheServerList" value="127.0.0.1:11211" /><property name="cacheServerWeights" value="3" /><property name="cacheCluster" value="true" /><property name="localCache" ref="localCache" /></bean>5.Spring配置文件中配置一个aop用来拦截各种操作。

Meme cached的安装与使用

Meme cached的安装与使用

Meme cached的安装与使用一、下载Memercached For Windows二、安装步骤1、解压到指定目录,如:C:\Memcached\memcached-win32-1.4.4-14。

2、用cmd打开命令窗口,转到解压的目录,输入“memcached.exe -d install”。

3、打开控制面板,打开服务,可以看到memcached已经在上面可,如果没有启动,则手动启动一下。

4、使用telnet命令验证缓存服务器是否可用。

开始什么都不显示,回车后输入命令 stats 查看统计信息,如下图,说明服务器运作正常。

三、参数介绍1.以上的安装和启动都是在默认环境下进行的,在安装时可设置如下参数:-p 监听的端口-l 连接的IP地址, 默认是本机-d start 启动memcached服务-d restart 重起memcached服务-d stop|shutdown 关闭正在运行的memcached服务-d install 安装memcached服务-d uninstall 卸载memcached服务-u 以的身份运行 (仅在以root运行的时候有效)-m 最大内存使用,单位MB。

默认64MB-M 内存耗尽时返回错误,而不是删除项-c 最大同时连接数,默认是1024-f 块大小增长因子,默认是1.25-n 最小分配空间,key+value+flags默认是48-h 显示帮助如:“memcached -d install -l 127.0.0.1 -m 1024 -c2048”。

2.输入stats命令后,页面出现的参数介绍。

STAT pid 4356 服务器进程IDSTAT uptime 56625 服务器运行时间,单位秒STAT time 1225249079 服务器当前的UNIX时间STAT version1.1.0服务器的版本号STAT pointer_size 64STAT rusage_user 151.845489 该进程累计的用户时间(秒:微妙) STAT rusage_system 121.667603 该进程累计的系统时间(秒:微妙) STAT ibuffer_size 4096STAT curr_connections 13 连接数量STAT total_connections 54136 服务器运行以来接受的连接总数STAT connection_structures 318 服务器分配的连接结构的数量STAT cmd_get 100595 取回请求总数STAT cmd_set 6510 存储请求总数STAT get_hits 96543 请求成功的总次数STAT get_misses 4052 请求失败的总次数STAT bytes_read 4427679 服务器从网络读取到的总字节数STAT bytes_written 6585596 服务器向网络发送的总字节数备注:uptime 是memcached运行的秒数,cmd_get是查询缓存的次数。

memcached的使用

memcached的使用

memcached的使⽤ 1. 下载memcached客户端⽂件把下载⽂件放在⽂件⽬录下2. 安装 memcached命令: c:/memcached/memcached.exe -d install3. 启动 memcachedc:/memcached/memcached.exe -d start4. 连接到 memcachedtelnet localhost 112115:客户端使⽤的基本命令启动/结束memcached -d -m 10 -u root -l 127.0.0.1 -p 11200 -c 256 -P /tmp/memcached.pid-d 选项是启动⼀个守护进程-m 是分配给Memcache使⽤的内存数量,单位是MB,这⾥是10MB-u 是运⾏Memcache的⽤户,这⾥是root-l 是监听的服务器IP地址,如果有多个地址的话,这⾥指定了服务器的IP地址127.0.0.1-p 是设置Memcache监听的端⼝,这⾥设置了12000,最好是1024以上的端⼝-c 选项是最⼤运⾏的并发连接数,默认是1024,这⾥设置了256,按照你服务器的负载量来设定-P 是设置保存Memcache的pid⽂件kill `cat /tmp/memcached.pid` 关闭memcached6:在项⽬中使⽤(与Spring集成)获取Memcached API 地址:创建接⼝MemcachedClient1import java.util.Collection;2import java.util.Map;3import java.util.concurrent.TimeoutException;45/**6 * 提供通⽤的memcached访问接⼝7*/8public interface MemcachedClient {9/**10 * 不管数据存在不存在都会将⽬前设置的数据存储的memcached11 *12 * @param key13 * 不要超过250字节14 * @param exp15 * 以秒为单位,如果超过30天的值,将会⽤unix timestamp来制定截⽌有效时间16 * @param value17 * @return18 * @throws TimeoutException19 * @throws InterruptedException20 * @throws MemcachedClientException21*/22boolean set(String key, int exp, Object value) throws TimeoutException,23 InterruptedException, MemcachedClientException;2425/**26 * 不管数据存在不存在都会将⽬前设置的数据存储的memcached,⾃⾏制定超时时间27 *28 * @see #set(String, int, Object)29 * @param key30 * @param exp31 * @param value32 * @param timeout33 * @return34 * @throws TimeoutException35 * @throws InterruptedException36 * @throws MemcachedClientException37*/38boolean set(String key, int exp, Object value, long timeout)39throws TimeoutException, InterruptedException,4142/**43 * 不管数据存在不存在都会将⽬前设置的数据存储的memcached,但不等待返回确认44 *45 * @see #set(String, int, Object)46 * @param key47 * @param exp48 * @param value49 * @throws InterruptedException50 * @throws MemcachedClientException51*/52void setWithNoReply(String key, int exp, Object value)53throws InterruptedException, MemcachedClientException;5455/**56 * 只有数据不存在时进⾏添加57 *58 * @param key59 * 不要超过250字节60 * @param exp61 * 以秒为单位,如果超过30天的值,将会⽤unix timestamp来制定截⽌有效时间62 * @param value63 * @return64 * @throws TimeoutException65 * @throws InterruptedException66 * @throws MemcachedClientException67*/68boolean add(String key, int exp, Object value) throws TimeoutException,69 InterruptedException, MemcachedClientException;7071/**72 * 只有数据不存在时进⾏添加73 *74 * @param key75 * @param exp76 * 以秒为单位,如果超过30天的值,将会⽤unix timestamp来制定截⽌有效时间77 * @param value78 * @param timeout79 * 1/1000秒为单位,在制定的时间段内没有响应就抛出TimeoutException80 * @return81 * @throws TimeoutException82 * @throws InterruptedException83 * @throws MemcachedClientException84*/85boolean add(String key, int exp, Object value, long timeout)86throws TimeoutException, InterruptedException,87 MemcachedClientException;8889/**90 * 只有数据不存在时进⾏添加,不需要返回具体的确认信息,⼤多数情况下可以⽤此⽅法来提升效率,毕竟我们对Memcached的理解是假设数据不是持久的91 *92 * @param key93 * @param exp94 * @param value95 * @throws InterruptedException96 * @throws MemcachedClientException97*/98void addWithNoReply(String key, int exp, Object value)99throws InterruptedException, MemcachedClientException;100101/**102 * 只有数据存在才进⾏覆盖103 *104 * @param key105 * @param exp106 * @param value107 * @return108 * @throws TimeoutException109 * @throws InterruptedException110 * @throws MemcachedClientException111*/112boolean replace(String key, int exp, Object value) throws TimeoutException,113 InterruptedException, MemcachedClientException;114115/**116 * 只有数据存在才进⾏覆盖117 *118 * @param key119 * @param exp120 * @param value121 * @param timeout122 * @return125 * @throws MemcachedClientException126*/127boolean replace(String key, int exp, Object value, long timeout)128throws TimeoutException, InterruptedException,129 MemcachedClientException;130131/**132 * 只有数据存在才进⾏覆盖,不等返回确认133 *134 * @param key135 * @param exp136 * @param value137 * @throws InterruptedException138 * @throws MemcachedClientException139*/140void replaceWithNoReply(String key, int exp, Object value)141throws InterruptedException, MemcachedClientException; 142143/**144 * 追加到当前数据的后⾯145 *146 * @param key147 * @param value148 * @return149 * @throws TimeoutException150 * @throws InterruptedException151 * @throws MemcachedClientException152*/153boolean append(String key, Object value) throws TimeoutException, 154 InterruptedException, MemcachedClientException;155156/**157 * 追加到当前数据的后⾯158 *159 * @param key160 * @param value161 * @param timeout162 * @return163 * @throws TimeoutException164 * @throws InterruptedException165 * @throws MemcachedClientException166*/167boolean append(String key, Object value, long timeout)168throws TimeoutException, InterruptedException,169 MemcachedClientException;170171/**172 * 追加到当前数据的后⾯,不等待响应173 *174 * @param key175 * @param value176 * @throws InterruptedException177 * @throws MemcachedClientException178*/179void appendWithNoReply(String key, Object value)180throws InterruptedException, MemcachedClientException; 181182/**183 * 追加到当前数据的前⾯184 *185 * @param key186 * @param value187 * @return188 * @throws TimeoutException189 * @throws InterruptedException190 * @throws MemcachedClientException191*/192boolean prepend(String key, Object value) throws TimeoutException, 193 InterruptedException, MemcachedClientException;194195/**196 * 追加到当前数据的前⾯197 *198 * @param key199 * @param value200 * @param timeout201 * @return202 * @throws TimeoutException203 * @throws InterruptedException204 * @throws MemcachedClientException205*/206boolean prepend(String key, Object value, long timeout)209210/**211 * 追加到当前数据的前⾯,不等待返回212 *213 * @param key214 * @param value215 * @throws InterruptedException216 * @throws MemcachedClientException217*/218void prependWithNoReply(String key, Object value)219throws InterruptedException, MemcachedClientException;220221long incr(String key, long delta, long initValue) throws TimeoutException,222 InterruptedException, MemcachedClientException;223224long incr(String key, long delta, long initValue, long timeout)225throws TimeoutException, InterruptedException,226 MemcachedClientException;227228void incrWithNoReply(String key, long delta) throws InterruptedException,229 MemcachedClientException;230231long decr(String key, long delta, long initValue) throws TimeoutException,232 InterruptedException, MemcachedClientException;233234long decr(String key, long delta, long initValue, long timeout)235throws TimeoutException, InterruptedException,236 MemcachedClientException;237238void decrWithNoReply(String key, long delta) throws InterruptedException,239 MemcachedClientException;240241boolean delete(String key) throws TimeoutException, InterruptedException,242 MemcachedClientException;243244boolean delete(String key, long opTimeout) throws TimeoutException,245 InterruptedException, MemcachedClientException;246247boolean delete(String key, long cas, long opTimeout)248throws TimeoutException, InterruptedException,249 MemcachedClientException;250251void deleteWithNoReply(String key) throws InterruptedException,252 MemcachedClientException;253254 <T> T get(String key) throws TimeoutException, InterruptedException,255 MemcachedClientException;256257 <T> T get(String key, long timeout) throws TimeoutException,258 InterruptedException, MemcachedClientException;259260 <T> Map<String, T> get(Collection<String> keyCollections)261throws TimeoutException, InterruptedException,262 MemcachedClientException;263264 <T> Map<String, T> get(Collection<String> keyCollections, long timeout)265throws TimeoutException, InterruptedException,266 MemcachedClientException;267268 <T> GetsResponse<T> gets(String key) throws TimeoutException,269 InterruptedException, MemcachedClientException;270271 <T> GetsResponse<T> gets(String key, long timeout) throws TimeoutException, 272 InterruptedException, MemcachedClientException;273274 <T> Map<String, GetsResponse<T>> gets(Collection<String> keyCollections) 275throws TimeoutException, InterruptedException,276 MemcachedClientException;277278 <T> Map<String, GetsResponse<T>> gets(Collection<String> keyCollections, 279long timeout) throws TimeoutException, InterruptedException,280 MemcachedClientException;281282283284boolean isEnabled();285 }创建接⼝实现类MemcachedClientWrapper1package .jszg.cache;3import java.util.Collection;4import java.util.HashMap;5import java.util.Map;6import java.util.Set;7import java.util.concurrent.TimeoutException;89import net.rubyeye.xmemcached.exception.MemcachedException;1011public class MemcachedClientWrapper implements MemcachedClient {12private net.rubyeye.xmemcached.MemcachedClient client;13private boolean enabled = false;1415public MemcachedClientWrapper() {16super();17 }1819public void setMemcachedClient(net.rubyeye.xmemcached.MemcachedClient client) {20this.client = client;21 }2223public net.rubyeye.xmemcached.MemcachedClient getXMemcachedClient() {24return client;25 }2627 @Override28public boolean set(String key, int exp, Object value) throws TimeoutException, InterruptedException, 29 MemcachedClientException {30try {31return client.set(key, exp, value);32 } catch (MemcachedException e) {33throw new MemcachedClientException(e);34 }35 }3637 @Override38public boolean set(String key, int exp, Object value, long timeout) throws TimeoutException,39 InterruptedException, MemcachedClientException {40try {41return client.set(key, exp, value, timeout);42 } catch (MemcachedException e) {43throw new MemcachedClientException(e);44 }45 }4647 @Override48public void setWithNoReply(String key, int exp, Object value) throws InterruptedException,49 MemcachedClientException {50try {51 client.setWithNoReply(key, exp, value);52 } catch (MemcachedException e) {53throw new MemcachedClientException(e);54 }55 }5657 @Override58public boolean add(String key, int exp, Object value) throws TimeoutException, InterruptedException, 59 MemcachedClientException {60try {61return client.add(key, exp, value);62 } catch (MemcachedException e) {63throw new MemcachedClientException(e);64 }65 }6667 @Override68public boolean add(String key, int exp, Object value, long timeout) throws TimeoutException,69 InterruptedException, MemcachedClientException {70try {71return client.add(key, exp, value, timeout);72 } catch (MemcachedException e) {73throw new MemcachedClientException(e);74 }75 }7677 @Override78public void addWithNoReply(String key, int exp, Object value) throws InterruptedException,79 MemcachedClientException {80try {81 client.addWithNoReply(key, exp, value);82 } catch (MemcachedException e) {83throw new MemcachedClientException(e);84 }85 }87 @Override88public boolean replace(String key, int exp, Object value) throws TimeoutException, InterruptedException,89 MemcachedClientException {90try {91return client.replace(key, exp, value);92 } catch (MemcachedException e) {93throw new MemcachedClientException(e);94 }95 }9697 @Override98public boolean replace(String key, int exp, Object value, long timeout) throws TimeoutException,99 InterruptedException, MemcachedClientException {100try {101return client.replace(key, exp, value, timeout);102 } catch (MemcachedException e) {103throw new MemcachedClientException(e);104 }105 }106107 @Override108public void replaceWithNoReply(String key, int exp, Object value) throws InterruptedException,109 MemcachedClientException {110try {111 client.replaceWithNoReply(key, exp, value);112 } catch (MemcachedException e) {113throw new MemcachedClientException(e);114 }115 }116117 @Override118public boolean append(String key, Object value) throws TimeoutException, InterruptedException,119 MemcachedClientException {120try {121return client.append(key, value);122 } catch (MemcachedException e) {123throw new MemcachedClientException(e);124 }125 }126127 @Override128public boolean append(String key, Object value, long timeout) throws TimeoutException, InterruptedException,129 MemcachedClientException {130try {131return client.append(key, value, timeout);132 } catch (MemcachedException e) {133throw new MemcachedClientException(e);134 }135 }136137 @Override138public void appendWithNoReply(String key, Object value) throws InterruptedException, MemcachedClientException { 139try {140 client.appendWithNoReply(key, value);141 } catch (MemcachedException e) {142throw new MemcachedClientException(e);143 }144 }145146 @Override147public boolean prepend(String key, Object value) throws TimeoutException, InterruptedException,148 MemcachedClientException {149try {150return client.prepend(key, value);151 } catch (MemcachedException e) {152throw new MemcachedClientException(e);153 }154 }155156 @Override157public boolean prepend(String key, Object value, long timeout) throws TimeoutException, InterruptedException,158 MemcachedClientException {159try {160return client.prepend(key, value, timeout);161 } catch (MemcachedException e) {162throw new MemcachedClientException(e);163 }164 }165166 @Override167public void prependWithNoReply(String key, Object value) throws InterruptedException, MemcachedClientException { 168try {169 client.prependWithNoReply(key, value);171throw new MemcachedClientException(e);172 }173 }174175 @Override176public long incr(String key, long delta, long initValue) throws TimeoutException, InterruptedException,177 MemcachedClientException {178try {179return client.incr(key, delta, initValue);180 } catch (MemcachedException e) {181throw new MemcachedClientException(e);182 }183 }184185 @Override186public long incr(String key, long delta, long initValue, long timeout) throws TimeoutException,187 InterruptedException, MemcachedClientException {188try {189return client.incr(key, delta, initValue, timeout);190 } catch (MemcachedException e) {191throw new MemcachedClientException(e);192 }193 }194195 @Override196public void incrWithNoReply(String key, long delta) throws InterruptedException, MemcachedClientException { 197try {198 client.incrWithNoReply(key, delta);199 } catch (MemcachedException e) {200throw new MemcachedClientException(e);201 }202 }203204 @Override205public long decr(String key, long delta, long initValue) throws TimeoutException, InterruptedException,206 MemcachedClientException {207try {208return client.decr(key, delta, initValue);209 } catch (MemcachedException e) {210throw new MemcachedClientException(e);211 }212 }213214 @Override215public long decr(String key, long delta, long initValue, long timeout) throws TimeoutException,216 InterruptedException, MemcachedClientException {217try {218return client.decr(key, delta, initValue, timeout);219 } catch (MemcachedException e) {220throw new MemcachedClientException(e);221 }222 }223224 @Override225public void decrWithNoReply(String key, long delta) throws InterruptedException, MemcachedClientException { 226try {227 client.decrWithNoReply(key, delta);228 } catch (MemcachedException e) {229throw new MemcachedClientException(e);230 }231 }232233 @Override234public boolean delete(String key) throws TimeoutException, InterruptedException, MemcachedClientException { 235try {236return client.delete(key);237 } catch (MemcachedException e) {238throw new MemcachedClientException(e);239 }240 }241242 @Override243public boolean delete(String key, long opTimeout) throws TimeoutException, InterruptedException,244 MemcachedClientException {245try {246return client.delete(key, opTimeout);247 } catch (MemcachedException e) {248throw new MemcachedClientException(e);249 }250 }251252 @Override253public boolean delete(String key, long cas, long opTimeout) throws TimeoutException, InterruptedException,255try {256return client.delete(key, cas, opTimeout);257 } catch (MemcachedException e) {258throw new MemcachedClientException(e);259 }260 }261262 @Override263public void deleteWithNoReply(String key) throws InterruptedException, MemcachedClientException {264try {265 client.deleteWithNoReply(key);266 } catch (MemcachedException e) {267throw new MemcachedClientException(e);268 }269 }270271 @SuppressWarnings("unchecked")272 @Override273public <T> T get(String key) throws TimeoutException, InterruptedException, MemcachedClientException { 274try {275return (T)client.get(key);276 } catch (MemcachedException e) {277throw new MemcachedClientException(e);278 }279 }280281 @SuppressWarnings("unchecked")282 @Override283public <T> T get(String key, long timeout) throws TimeoutException, InterruptedException,284 MemcachedClientException {285try {286return (T)client.get(key, timeout);287 } catch (MemcachedException e) {288throw new MemcachedClientException(e);289 }290 }291292 @Override293public <T> Map<String, T> get(Collection<String> keyCollections) throws TimeoutException,294 InterruptedException, MemcachedClientException {295try {296return client.get(keyCollections);297 } catch (MemcachedException e) {298throw new MemcachedClientException(e);299 }300 }301302 @Override303public <T> Map<String, T> get(Collection<String> keyCollections, long timeout) throws TimeoutException, 304 InterruptedException, MemcachedClientException {305try {306return client.get(keyCollections, timeout);307 } catch (MemcachedException e) {308throw new MemcachedClientException(e);309 }310 }311312 @SuppressWarnings("unchecked")313 @Override314public <T> GetsResponse<T> gets(String key) throws TimeoutException, InterruptedException,315 MemcachedClientException {316try {317return new GetsResponse<T>((net.rubyeye.xmemcached.GetsResponse<T>) client.gets(key));318 } catch (MemcachedException e) {319throw new MemcachedClientException(e);320 }321 }322323 @SuppressWarnings("unchecked")324 @Override325public <T> GetsResponse<T> gets(String key, long timeout) throws TimeoutException, InterruptedException, 326 MemcachedClientException {327try {328return new GetsResponse<T>((net.rubyeye.xmemcached.GetsResponse<T>) client.gets(key, timeout)); 329 } catch (MemcachedException e) {330throw new MemcachedClientException(e);331 }332 }333334 @Override335public <T> Map<String, GetsResponse<T>> gets(Collection<String> keyCollections) throws TimeoutException, 336 InterruptedException, MemcachedClientException {339 Map<String, net.rubyeye.xmemcached.GetsResponse<T>> tmps = client.gets(keyCollections);340if (tmps != null) {341 Set<String> keys = tmps.keySet();342for (String key : keys) {343 results.put(key, new GetsResponse<T>((net.rubyeye.xmemcached.GetsResponse<T>) tmps.get(key)));344 }345 }346return results;347 } catch (MemcachedException e) {348throw new MemcachedClientException(e);349 }350 }351352 @Override353public <T> Map<String, GetsResponse<T>> gets(Collection<String> keyCollections, long timeout)354throws TimeoutException, InterruptedException, MemcachedClientException {355try {356 Map<String, GetsResponse<T>> results = new HashMap<String, GetsResponse<T>>();357 Map<String, net.rubyeye.xmemcached.GetsResponse<T>> tmps = client.gets(keyCollections, timeout);358if (tmps != null) {359 Set<String> keys = tmps.keySet();360for (String key : keys) {361 results.put(key, new GetsResponse<T>((net.rubyeye.xmemcached.GetsResponse<T>) tmps.get(key)));362 }363 }364return results;365 } catch (MemcachedException e) {366throw new MemcachedClientException(e);367 }368 }369370 @Override371public boolean isEnabled() {372return enabled;373 }374375public void setEnabled(boolean enabled) {376this.enabled = enabled;377 }378379 }经验总结:缓存数据的⼀致性问题缓存数据尽量只读,因此缓存本⾝是不适合⼤量写和更新操作的数据场景的。

memcache 用法

memcache 用法

memcache 用法摘要:1.简介2.Memcache的安装与配置3.Memcache的使用方法4.Memcache的数据类型5.Memcache的应用场景6.Memcache的优缺点7.总结正文:Memcache是一款高性能的分布式内存对象缓存系统,主要用于提高网站访问速度和减轻服务器负载。

它通过将热点数据存储在内存中,以减少对数据库的访问次数,从而提高网站性能。

1.简介Memcache是一个高性能的分布式内存对象缓存系统,主要用于提高网站访问速度和减轻服务器负载。

它通过将热点数据存储在内存中,以减少对数据库的访问次数,从而提高网站性能。

Memcache支持多种数据类型,包括字符串、整数、浮点数等。

2.Memcache的安装与配置要使用Memcache,首先需要在服务器上安装Memcache服务端。

安装完成后,需要对Memcache进行配置,包括设置内存大小、连接数等参数。

配置完成后,启动Memcache服务。

3.Memcache的使用方法Memcache的使用方法主要包括以下几个步骤:(1)连接Memcache服务器:使用PHP的Memcache扩展库,通过`memcache_connect()`函数连接到Memcache服务器。

(2)设置缓存数据:使用`memcache_set()`函数将数据存储到Memcache中。

(3)获取缓存数据:使用`memcache_get()`函数从Memcache中获取数据。

(4)删除缓存数据:使用`memcache_delete()`函数从Memcache中删除数据。

(5)清空缓存:使用`memcache_clear_cache()`函数清空Memcache 中的所有数据。

4.Memcache的数据类型Memcache支持多种数据类型,包括字符串、整数、浮点数等。

此外,Memcache还支持数据结构,如数组、链表等。

5.Memcache的应用场景Memcache主要应用于以下场景:(1)缓存数据库查询结果:将经常访问的数据从数据库中取出,存储到Memcache中,以减少对数据库的访问次数。

Memecached的安装与使用

Memecached的安装与使用

M e m e c a c h e d的安装与使用公司内部档案编码:[OPPTR-OPPT28-OPPTL98-OPPNN08]Meme cached的安装与使用一、下载Memercached For Windows二、安装步骤1、解压到指定目录,如:C:\Memcached\。

2、用cmd打开命令窗口,转到解压的目录,输入“ -d install”。

3、打开控制面板,打开服务,可以看到memcached已经在上面可,如果没有启动,则手动启动一下。

4、??? 使用telnet命令验证缓存服务器是否可用。

开始什么都不显示,回车后输入命令? stats? 查看统计信息,如下图,说明服务器运作正常。

三、参数介绍1.以上的安装和启动都是在默认环境下进行的,在安装时可设置如下参数:-p 监听的端口-l 连接的IP地址, 默认是本机-d start 启动memcached服务-d restart 重起memcached服务-d stop|shutdown 关闭正在运行的memcached服务-d install 安装memcached服务-d uninstall 卸载memcached服务-u 以的身份运行 (仅在以root运行的时候有效)-m 最大内存使用,单位MB。

默认64MB-M 内存耗尽时返回错误,而不是删除项-c 最大同时连接数,默认是1024-f 块大小增长因子,默认是-n 最小分配空间,key+value+flags默认是48-h 显示帮助如:“memcached -d install -l -m 1024 -c2048”。

2.输入stats命令后,页面出现的参数介绍。

STAT pid 4356 服务器进程IDSTAT uptime 56625 服务器运行时间,单位秒STAT time 79 服务器当前的UNIX时间STAT 服务器的版本号STAT pointer_size 64STAT rusage_user 该进程累计的用户时间(秒:微妙)STAT rusage_system 该进程累计的系统时间(秒:微妙)STAT ibuffer_size 4096STAT curr_connections 13 连接数量STAT total_connections 54136 服务器运行以来接受的连接总数STAT connection_structures 318 服务器分配的连接结构的数量STAT cmd_get 100595 取回请求总数STAT cmd_set 6510 存储请求总数STAT get_hits 96543 请求成功的总次数STAT get_misses 4052 请求失败的总次数STAT bytes_read 4427679 服务器从网络读取到的总字节数STAT bytes_written 6585596 服务器向网络发送的总字节数备注:uptime 是memcached运行的秒数,cmd_get是查询缓存的次数。

最简单的memcached的安装使用教程

最简单的memcached的安装使用教程
启动服务
C:/memcached>sc start memcache11212
停止服务
C:/memcached>sc start memcache11212
删除服务
C:/memcached>sc delete memcached
查看缓存区块,分析结果可调配-f参数
telnet 127.0.0.1 11212
是否显示详细操作记录(每一个键值get、set、hit、del的次数)
stats detail on,记录详细操作
stats detail dump,不记录详细操作
====================================
显示各个slab中item的数目和最老item的年龄(最后一次访问距离现在的秒数)
memcached是一个常用的缓存组件,通过最简单的学习就可以掌握和在项目中使用
首先第一步:
Windows下的Memcached安装
方法一:直接安装
1、下载memcache的windows稳定版,解压放某个盘下面,比如在cபைடு நூலகம்/memcached
2、在终端(也即cmd命令界面)下输入"c:/memcached/memcached.exe -d install"安装
import net.rubyeye.xmemcached.XMemcachedClientBuilder;
import net.rubyeye.xmemcached.exception.MemcachedException;
import net.rubyeye.xmemcached.utils.AddrUtil;

Windows下的Memcache安装与配置

Windows下的Memcache安装与配置

-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
Windows下的Memcache安装与配置
1.
很多phper不知道如何在Windows下搭建Memcache的开发调试环境,最近个人也在研究Memcache,记录下自己安装搭建的过程。
其实我开始研究Memcache的时候并不知道居然还有memcached for Win32这个鸟东西,害得我在CnetOS下折腾1天才搞定,今天突然发现Windows下的Memcache进行开发调试完全没有问题,所以写篇Memcache的文档分享给大家。
Win32版的memcached是系统服务,要双开就必须安装两个服务了
改文件名的方法没用,只好暴力地改注册表了,步骤如下
1、在CMD里运行 C:\Memcached\Memcached.exe -d install
2、打开注册表编辑器,定位到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server
把目录名字(memcached Server)改成“Memcached Session Service"。
键DisplayName的值也改成 “Memcached Session Service"。
键ImagePath 的值改成 "C:\memcached\memcached.exe" -p 11211 -m 8 -d runservice

Memcache的部署和使用

Memcache的部署和使用

Memcache的部署和使⽤Memcache的部署和使⽤⼀、memcache简介Memcache是的⼀个项⽬,最早是为 LiveJournal 服务的,⽬前全世界不少⼈使⽤这个缓存项⽬来构建⾃⼰⼤负载的⽹站,来分担数据库的压⼒。

Memcache官⽅⽹站:⼆、memcache的安装1、下载源⽂件(⽬前最新稳定版本是memcached-1.4.5.tar.gz)wget由于Memcache⽤到了libevent这个库⽤于Socket的处理,所以还需要安装libevent,Libevent的官⽹为,最新稳定版本为:1.4.14bwget2、安装memcache1)、安装libevent# tar xzvf libevent-1.4.14b-stable.tar.gz# cd libevent-1.4.14b-stable# ./configure --prefix=/usr# make && make install# cd ..# ls -al /usr/lib | grep libevent (查看是否安装成功)2)、安装memcache# tar xzvf memcached-1.4.5.tar.gz# cd memcached-1.4.5# ./configure --with-libevent=/usr# make && make install# ls -al /usr/local/bin/mem* (查看是否⽣成memcached可执⾏程序⽂件)#备注:如果是64位的系统可能会报错,因为默认的库⽂件只会安装到/usr/lib下⾯3、启动memcache# 通过/usr/local/bin/memcached –h查看命令选项帮助[root@Centos2 memcached-1.4.5]# /usr/local/bin/memcached -hmemcached 1.4.5-p <num> TCP port number to listen on (default: 11211)-U <num> UDP port number to listen on (default: 11211, 0 is off)-s <file> UNIX socket path to listen on (disables network support)-a <mask> access mask for UNIX socket, in octal (default: 0700)-l <ip_addr> interface to listen on (default: INADDR_ANY, all addresses)-d run as a daemon-r maximize core file limit-u <username> assume identity of <username> (only when run as root)-m <num> max memory to use for items in megabytes (default: 64 MB)-M return error on memory exhausted (rather than removing items)-c <num> max simultaneous connections (default: 1024)#启动命令如下# /usr/local/bin/memcached -d -m 10 -u root -l 172.28.5.2 -p 12000 -c 1024 –P /tmp/memcached.pid####相关选项说明-d 表⽰启动⼀个守护进程-m 是分配给memcached使⽤的内存-u 运⾏memcached的⽤户-l 是memcached监听的ip-p 是memcached监听的端⼝-c memcache运⾏的最⼤并发连接数-P 是设置memcache的pid⽂件三、Php的memcache扩展的安装1、 windows平台memcache扩展的安装下载相应版本的php_memcache.dll⽂件,然后将该⽂件放到D:\AppServ\php5\ext⽬录下(路径根据php安装的位置不同请⾃⾏设置),然后更改相应的php.ini的设置,创建<?php phpinfo();?>的php⽂件,访问这个⽂件看memcache模块是否起作⽤。

Memcached 安装与java简单应用(windows)

Memcached 安装与java简单应用(windows)
121.(NOT_STORED)
.danga.MemCached.MemCachedClient Tue Jan3116:28:39CST2012- ++++ data not stored in cacheforkey: hello
123.get value : memcached Test
15.protectedstaticMemcachedTest memCached =newMemcachedTest();
16.
17.//设置与缓存服务器的连接池
18.static{
19.//服务器列表和其权重
20.String[] servers = {"127.0.0.1:11211"};
21.Integer[] weights = {3};
65.publicstaticMemcachedTest getInstance()
66.{
67.returnmemCached;
68.}
69.
70./**
71.*添加一个指定的值到缓存中.
72.* @param key
73.* @param value
74.* @return
75.*/
76.publicbooleanadd(String key, Object value)
107.{
108.MemcachedTest cache = MemcachedTest.getInstance();
109.cache.add("hello","memcached Test");
110.System.out.print("get value : "+ cache.get("hello"));

window安装memcache的准备工作及其安装过程

window安装memcache的准备工作及其安装过程

Window安装memcache准备工作及其安装过程window下要支持memcache,同时要安装memcache服务器端,和客户端:memcache 服务器端下载,memcache客户端下载,首先把服务器端下载下来解压到D 盘目录D:\memcached-1.2.1-win32,CMD里执行命令:XML/HTML代码1cd D:\memcached-1.2.1-win322memcached.exe -u administator -d install3net start "memcached server"会出现如图:说明memcache服务器安装成功了.哈哈,接着再安装memcache客户端:下载后复制到PHP的ext目录,然后在系统正在使用中的php.ini中添加一行extension=php_memcache.dll重启apache,看到memcache模块就算安装成功了。

写个代码测试下:PHP代码4$mem = new Memcache;5$mem->connect("localhost", 11211);6$mem->set('key', 'value', 0, 60);7$val = $mem->get('key');8echo $val;//输出结果为“value”PS:memche格式存取数组的时候,防止数组类型丢失,常常要系列化(serialize/ json_encode)成字符串再存附带memcache启动时相关参数:启动方式:参数说明-d 以守护程序(daemon)方式运行-u root 指定用户,如果当前为root ,需要使用此参数指定用户-P /tmp/a.pid 保存PID到指定文件内存设置:参数说明-m 1024 数据内存数量,不包含memcached本身占用,单位为MB -M 内存不够时禁止LRU,报错-n 48 初始chunk=key+suffix+value+32结构体,默认48字节-f 1.25 增长因子,默认1.25-L 启用大内存页,可以降低内存浪费,改进性能连接设置:参数说明-l 127.0.0.1 监听的IP 地址,本机可以不设置此参数-p 11211 TCP端口,默认为11211,可以不设置-U 11211 UDP端口,默认为11211,0为关闭并发设置:参数说明-c 1024 最大并发连接数,默认1024,最好是200-t 4 线程数,默认4。

Memcached详解分解

Memcached详解分解

Memcached技术介绍:memcached是一种缓存技术, 他可以把你的数据放入内存,从而通过内存访问提速,因为内存最快的,memcached技术的主要目的提速,在memachec 中维护了一张大的hashtable表,该表是在内存,表的结构是key value字串(字串,数值,数组,对象,布尔,二进制数据,null)原理说明:安装并使用memcached安装步骤(1)下载memcached软件(2)安装进入cmd ,切换到memcached.exe 文件所在目录memcached.exe –d install(3)启动memcached第一种,可以到服务点击启动第二种, 命令行memcached.exe –m 200MB –d start 【以deamon方式启动,默认64M】如果你在启动时,win7启动不成功, 则可以使用如下方法memcached.exe –p 端口号启动方法不要关闭控制台.端口号的范围: 0-65535 , 因为端口号是用两个字节来表示有名端口: 0-1024 已经用程序使用, apache 80 , mysql 3306 , ftp 21 , ssh 22oracle: 1521, stmp: 25使用netstat –an 如果看到11211端口在监听,说明启动oknetstat –anb 是哪个程序监听, 这个指令还可以看到有哪些用户连接到我们的服务器.如果没有安装好,原因可能1.如果你是win7, win7对安全性高,所有,必须以adminstartor 身份来安装.你切换成adminstrator , 去安装,在启动2.你的memcached.exe 目录有中文,或特殊字符, 保证目录没有中文和特殊字符.(4)准备研究如果对memcached进行curd操作.看看telnet如何操作(curd)1.登录到telnet连接到memcached服务telnet 127.0.0.1 11211如果你们不能使用telnet 是因为系统不存在telnet.exe , 就可以到其它机器上拷贝telnet.exe 放在c:\windows\system32 即可2.增加基本语法是:add key名0 存放时间(秒) 数据大小(字符)举例:add key1 0 30 53.如何获取基本语法是:get key值get key14.修改set key名0 存放时间数据大小.举例:set key1 0 40 5☞如果key1不存在,则相当于增加新,如果存在,则相当有替换replace key名存放时间数据大小replace key1 0 40 5☞如果key1不存在,则失败,这个指令要求key必须存在.5.删除基本语法是delete key名比如delete key1append Append data to existing key append key 0 60 15prepend Prepend data to existing key prepend key 0 60 15flush_all 可以统一把数据清空.这里主要大家可以去计算出命中率cmd_hits/cmd_get . 越高越好.如何使用php程序操作我们的memcached服务curd.步骤,准备工作.(1)把php_memcache.dll 文件拷贝php的ext 下☞不同版本的php 所使用的php_memcache.dll 的版本不一样(2)修改php.ini文件,加载php_memcache.dll (该文件就是封装了一堆函数);加载php_memcache.dll 文件extension=php_memcache.dll(3)重新启动apache(4)我们写程序来完成curd操作.细节: 在我们添加数据的时候,如果bool Memcache::add ( string $key , mixed$var [, int $flag [, int $expire ]] )如果报expire 设为0 表示,永不过期.(只要memcache不重新启动,就永远在mem中) exprie 直接给的是秒数,则最大30*3600*24如果你希望保持时间超过30 time()+天数*3600*24 即可最后代码:mem1.php<?php//创建一个mem对象实例$mem=new Memcache;if(!$mem->connect("127.0.0.1",11211)){die('连接失败!');}//增加//1.增加一个字串/* if($mem->set('key1',"beijing",MEMCACHE_COMPRESSED,60)){echo '添加ok';}*///2.添加数值/* if($mem->set('key1',100,MEMCACHE_COMPRESSED,60)){echo '添加ok';}*///3.添加数组//在添加数组是,根据需要. 希望序列号放入,//serialize<=>unserialize,如果根据需要,也可以json_encode <=> json_decode $arr=array("bj",'tj');if($mem->set('key1',$arr,MEMCACHE_COMPRESSED,time()+31*3600*24)){echo '添加数组ok99111';}//4.添加对象/* class Dog{public $name;public $age;public function __construct($name,$age){$this->name=$name;$this->age=$age;}}$dog1=new Dog('小狗',50);if($mem->set('key1',$dog1,MEMCACHE_COMPRESSED,60)){echo '添加对象ok';}*///5.添加null 布尔值/* if($mem->set('key1',false,MEMCACHE_COMPRESSED,60)){echo '添加布尔ok';}*///6. 资源类型放入./* $con=mysql_connect("127.0.0.1","root","root");if(!$con){die('连接数据库失败');}var_dump($con);echo "<br/>";if($mem->set('key1',$con,MEMCACHE_COMPRESSED,60)){echo '添加资源ok';}*///查询$val=$mem->get('key1');var_dump($val);//修改//可以使用replaceif($mem->replace("key11",'hello',MEMCACHE_COMPRESSED,60)){echo 'replace ok';}else{echo 'replace no ok';}//删除echo "<br/>";if($mem->delete('key14')){echo 'key14 删除';}else{echo 'key14不存在';}mem2.php<?php//这个文件去操作memcached服务//创建一个mem对象实例$mem=new Memcache;if(!$mem->connect("127.0.0.1",11211)){die('连接失败!');}//在另外文件中取出对象时,有个注意的地方,对应php5.2这个版本会提示错误, //对php5.3这个版本会提示incomplete 信息, 解决方法是声明类定义即可class Dog{public $name;public $age;public function __construct($name,$age){$this->name=$name;$this->age=$age;}}$dog=$mem->get('key1');var_dump($dog);test.php 说明serilize 和json_encode用法://什么时候使用serilize 什么时候使用json_encode [ajax配合]练习: 请大家使用php 程序memcache.dll 完成对memcahce增删改查20min如何使用PHP源码来操作memcached服务如果管理员不让我们去加载memcache.dll 文件,我们可以直接通过源码操作.关闭扩展.代码mem3.php<?phprequire_once 'memcached-client.php';$mc = new memcached(array('servers' => array('127.0.0.1:11211'), //连接的memcacheip和端口'debug' => false, //是否debug'compress_threshold' => 10240, /*最大压缩*/'persistant' => true)); /*是否是持久连接*/$mc->set('key1', array('some', 'array'));// $mc->replace('key', 'some random string');$val = $mc->get('key1');var_dump($val);//修改$mc->replace('key1', "北京");$val = $mc->get('key1');var_dump($val);//删除$mc->delete('key1');$val = $mc->get('key1');echo "删除后";var_dump($val);Memcached 机制的深入了解③, memcache的数据是放入到内存,并且在数据爆满的情况下,使用LRU 算法删除写段代码说明: mem4.phpmem5.php 取出.总结:1.mem服务的数据不是同步, 数据是分布的2.把什么数据放入到哪个memcached是由客户端的mem对象决定3.当执行addServer的时候,并不是立即去连接mem服务,而是通过计算,hash后才去决定连接哪个mem服务,因此当你大量加入服务器到连接池,没有多余开销memcache的细节讨论①生命周期从数据放入mem开始计时,直到时间到了,就销毁, 如果时间为0, 则表示不过期.memcache的数据被销毁的情况如下:1.时间到2.重启memcached服务3.重启memcached服务所在的机器4.delete / flush 销毁数据②如何把session数据放入到memcached服务中.步骤:1.修改php.ini的配置文件如下:;[sesson.save_handler 有user|files|memcache]session.save_handler = memcachesession.save_path = "tcp://127.0.0.1:11211"③测试一把,重启apache测试ok<?php//传统的代码session_start();$_SESSION['name']='天龙八部300';$_SESSION['city']='beijing';class Dog{public $name;}$dog1=new Dog;$dog1->name='abcde';$_SESSION['dog']=$dog1;//如果session数据入mem,那他一定是以session_id为//key值进行添加//取出$name=$_SESSION['name'];echo "name=$name";echo "sessionid=".session_id();◆思考,如果管理员,不让我们修改php.ini 文件,我们如何处理session入memcached这个功能, 我们通过一个函数可以去修改php.ini 的配置.代码:<?phpini_set("session.save_handler","memcache");ini_set("session.save_path","tcp://127.0.0.1:9999");同时你也可以通过ini_set 去动态的修改对php.ini 的其它设置。

memcached安装+php使用手记

memcached安装+php使用手记

本文简要介绍一下安装的情况,以及PHP模块memcache使用情况:提要:1。

安装memcached服务器端2。

安装php对memcache支持模块3。

使用memcache情况,计数器、数据压缩4。

Memcache内存的更新清理(delete flush)5。

内存超量的测试(set)1。

安装memcached服务器端memcached安装说明(北南南北的站):/main/?q=node/184注意的是:如果你安装过程中出现错误,请看看是不是有模块没装:autoconfzlib (压缩数据用)2。

安装php对memcache支持模块PHP老家:/manual/zh/ref.memcache.php(PHP 4.3.3 or newer is required to use the memcache extension. 难道,4.3.3都装上了吗?好像没有吧,用4.4.4好像都要另外装的)3。

使用memcache情况,计数器、数据压缩使用情况一:统计<?php//访问统计$memcache = new Memcache;$memcache->connect('localhost', 11211) or die ("Could not connect");if($s=$memcache->get('a')) {$s=$s+1;$memcache->set('a',$s);}else$memcache->set('a',1);echo '访问结果为:'.$s;?>其实我们可以用increment方法代替上面的做法<?php$memcache = new Memcache;$memcache->set('b'.$i,rand(1,99));echo '<br>'.$i.'->'.$memcache->get('b'.$i);}/*查看设置的值*/$status = $memcache->getStats();echo 'delete前内存使用情况'.$status['bytes'].'<br>';echo '<br>开始delete';for($i=0;$i<9;$i++) {$memcache->delete('b'.$i);echo '<br>'.$i.'->'.$memcache->get('b'.$i);}/*查看flush使用的情况*/$status = $memcache->getStats();echo '使用flush前内存使用情况'.$status['bytes'].'<br>';echo '使用flush情况:';for($i=0;$i<9;$i++) {$memcache->set('b'.$i,rand(1,99));echo '<br>'.$i.'->'.$memcache->get('b'.$i);}$memcache->flush();echo 'flush之后:';for($i=0;$i<9;$i++) {echo '<br>'.$i.'->'.$memcache->get('b'.$i);}$status = $memcache->getStats();echo 'flush后内存使用情况'.$status['bytes'].'<br>';?>5。

php memcached 用法

php memcached 用法

php memcached 用法“php memcached 用法”Memcached是一种高性能分布式内存对象缓存系统,常用于缓存常用数据,提高Web应用程序的性能。

在PHP中,Memcached可以通过扩展或使用Memcached类来实现。

本文将深入探讨Memcached的用法,包括安装、配置、连接、存储与获取数据、过期时间设置和常见问题解决等方面的内容。

第一步:安装和配置Memcached要使用PHP的Memcached扩展,首先需要在服务器上安装Memcached 软件包。

在Linux系统上,我们可以通过包管理器来安装。

例如,对于Ubuntu,可以使用以下命令安装:sudo apt-get install memcached安装好Memcached之后,我们需要编辑php.ini文件来启用Memcached扩展。

找到该文件(通常位于/etc/php/7.4/apache2/目录中)并打开它。

在文件中找到一个名为"extension"的行,然后在该行下面添加以下代码:extension=memcached.so保存并关闭php.ini文件。

重启Web服务器,使配置生效。

第二步:连接Memcached服务器在PHP中,我们可以通过两种方式连接到Memcached服务器:使用Memcached扩展或使用Memcached类。

以下是实现两种方法的示例代码:1. 使用Memcached扩展memcached = new Memcached();memcached->addServer('localhost', 11211);在这个例子中,我们创建了一个Memcached实例,并添加了一个服务器。

这里的localhost是Memcached服务器的主机名或IP地址,11211是Memcached服务器的默认端口号。

2. 使用Memcached类memcached = new Memcached();memcached->addServer('localhost', 11211);与使用Memcached扩展相比,使用Memcached类的代码几乎是一样的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Memcache 的安装和使用
安装:
下载安装包:memcached-1.4.8.tar.gz(最新)libevent-1.4.9-stable.tar.gz(socket通信程序,它是memcached 所依赖的异步事件通知库) 上述包都是用c写的。

故在linux环境下安装,linux必须有c编译环境,目前都用gcc(最好系统自带,否则自己安装非常麻烦,特别耗时间)
命令
tar –xzf libevent-1.4.9-stable.tar.gz
cd libevent-1.4.9-stable.tar.gz
./configure –prefix=/usr
make
make install
=============libevent 安装完毕====================
tar –xzf memcached-1.4.8.tar.gz
cd memcached-1.4.8.tar.gz
./configure –prefix=/usr
make
make install
=============memcache安装完毕==================
Memcache 已经安装到usr/bin目录下
启动
/usr/bin memcached –d –m 128 –l 10.10.31.79 –p 11211 -u root
-d 以守护(daemon)程序方式运行memcached
-l 设置监听的ip地址,如果是本机,通常不设置
-p 设置监听端口,默认为11211 通常不设置
-m 设置内存大小单位M
-u 指定用户。

当前用户为root时,可以指定用户。

(不能以root用户权限启动)
-vv 用very vrebose模式启动,调试信息和错误输出到控制台
还有很多命令可以用memcached –h 来查看
测试
telnet server port
这里,我用的SecureCRT ,当然还有很多客户端工具,如PuTTy;Window 自带的cmd中的telnet 也可以,但是容易出现乱码问题,得设置编码格式。

简介
Memcached 作为一个主要用作访问加速的不落地cache,其内存主要是使用程序上的堆内存(heap memory),而且内存一旦分配不再释放;同时为了加速对对应内存块的访问,采用了Hash桶管理内存的方式;在数据淘汰算法方面使用了LRU(最近最少使用算法)。

特点
1、协议简单。

服务器客户端的通信不使用复杂的xml等方式,采用简单基于文本行的协议。

2、基于libevent的事件处理。

3、内置内存处理方式
4、Memcached不互相通信的分布式
Memcached尽管是分布式缓存服务器,但服务器端并没有分布式功能,各个memcached 不会互相通信以共享缓存信息。

分布式完全取决于客户端的实现。

保存数据的方法
Add 仅当存储空间中不存在键相同的数据时保存
方法:
add(“键”,值””,”期限”) 期限单位:秒
replace 仅当存储空间中存在键相同的数据时保存
方法:
replace(“key”,”value”,”time”)
set 与add 和replace不同,无论何时都保存
方法:
set(“key”,”value”,”time”) 此方法的key默认长度为250个字符
获取数据的方法
1、get、gets
get(“key”);
gets(key);
删除数据
delete(“key”,”阻塞时间(秒)”)
阻塞时间的作用:可以阻止该时间内,以同样的键值保存新数据,但对set无效。

注意事项
1、不要存太大的数据,如超过1M,memcached默认是不能存超过1M的数据的,其次,
过大的数据在进行序列化和反序列化的时候会浪费不少时间。

2、Key不能包含控制字符和空白字符。

可以把key进行MD5后的结果作为key
3、找了份参考资料,写的很详细
/developerworks/cn/java/j-memcached1。

相关文档
最新文档