MemCache_Client_User_Guide(Chinese)

合集下载

Memcache常用命令

Memcache常用命令
分配给memcache的内存大小(字节)
threads
当前线程数
bytes
当前服务器存储items占用的字节数
curr_connections
当前打开着的连接数
total_connections
从服务器启动以后曾经打开过的连接数
connection_structures
服务器分配的连接构造数set
set命令(保存)总请求次数
add
Add a new key
add newkey 0 60 5
replace
Overwrite existing key
replace key 0 60 5
append
Append data to existing key
append key 0 60 15
prepend
Prepend data to existing key
stats slabs
Prints memory statistics
stats malloc
Print higher level allocation statistics
stats items
stats detail
stats sizes
Resets statistics
stats reset
version
memcached的基本命令(安装、卸载、启动、配置相关):
-p监听的端口
-l连接的IP地址,默认是本机
-d start启动memcached服务
-d restart重起memcached服务
-d stop|shutdown关闭正在运行的memcached服务
-d install安装memcached服务

Memcache基础教程

Memcache基础教程

Memcache基础教程Memcache是什么Memcache是的⼀个项⽬,最早是为 LiveJournal 服务的,⽬前全世界不少⼈使⽤这个缓存项⽬来构建⾃⼰⼤负载的⽹站,来分担数据库的压⼒。

它可以应对任意多个连接,使⽤⾮阻塞的⽹络IO。

由于它的⼯作机制是在内存中开辟⼀块空间,然后建⽴⼀个HashTable,Memcached⾃管理这些HashTable。

Memcache官⽅⽹站:/memcached,更多详细的信息可以来这⾥了解 :)为什么会有Memcache和memcached两种名称?其实Memcache是这个项⽬的名称,⽽memcached是它服务器端的主程序⽂件名,知道我的意思了把~~~~。

⼀个是项⽬名称,⼀个是主程序⽂件名,在⽹上看到了很多⼈不明⽩,于是混⽤了。

Memcache的安装分为两个过程:memcache服务器端的安装和memcached客户端的安装。

所谓服务器端的安装就是在服务器(⼀般都是linux系统)上安装Memcache实现数据的存储所谓客户端的安装就是指php(或者其他程序,Memcache还有其他不错的api接⼝提供)去使⽤服务器端的Memcache提供的函数,需要php添加扩展。

具体的配置⼤家可以参考::/257.html:/258.html:/259.html:/261.html:/306.html:/395.htmlPHP的Memcache1 < ?php2//连接3$mem = new Memcache;4$mem->connect("192.168.0.200", 12000);56//保存数据7$mem->set('key1', 'This is first value', 0, 60);8$val = $mem->get('key1');9echo "Get key1 value: " . $val ."<br />";1011//替换数据12$mem->replace('key1', 'This is replace value', 0, 60);13$val = $mem->get('key1');14echo "Get key1 value: " . $val . "<br />";1516//保存数组17$arr = array('aaa', 'bbb', 'ccc', 'ddd');18$mem->set('key2', $arr, 0, 60);19$val2 = $mem->get('key2');20echo "Get key2 value: ";21print_r($val2);22echo "<br />";2324//删除数据25$mem->delete('key1');26$val = $mem->get('key1');27echo "Get key1 value: " . $val . "<br />";2829//清除所有数据30$mem->flush();31$val2 = $mem->get('key2');32echo "Get key2 value: ";33print_r($val2);34echo "<br />";3536//关闭连接37$mem->close();38 ?>如果正常的话,浏览器将输出:Get key1 value: This is first valueGet key1 value: This is replace valueGet key2 value: Array ( [0] => aaa [1] => bbb [2] => ccc [3] => ddd )Get key1 value:Get key2 value:程序代码分析初始化⼀个Memcache的对象:$mem = new Memcache;连接到我们的Memcache服务器端,第⼀个参数是服务器的IP地址,也可以是主机名,第⼆个参数是Memcache的开放的端⼝:$mem->connect("192.168.0.200", 12000);保存⼀个数据到Memcache服务器上,第⼀个参数是数据的key,⽤来定位⼀个数据,第⼆个参数是需要保存的数据内容,这⾥是⼀个字符串,第三个参数是⼀个标记,⼀般设置为0或者MEMCACHE_COMPRESSED就⾏了,第四个参数是数据的有效期,就是说数据在这个时间内是有效的,如果过去这个时间,那么会被Memcache服务器端清除掉这个数据,单位是秒,如果设置为0,则是永远有效,我们这⾥设置了60,就是⼀分钟有效时间:$mem->set('key1', 'This is first value', 0, 60);从Memcache服务器端获取⼀条数据,它只有⼀个参数,就是需要获取数据的key,我们这⾥是上⼀步设置的key1,现在获取这个数据后输出输出:$val = $mem->get('key1');echo "Get key1 value: " . $val;现在是使⽤replace⽅法来替换掉上⾯key1的值,replace⽅法的参数跟set是⼀样的,不过第⼀个参数key1是必须是要替换数据内容的key,最后输出了:$mem->replace('key1', 'This is replace value', 0, 60);$val = $mem->get('key1');echo "Get key1 value: " . $val;同样的,Memcache也是可以保存数组的,下⾯是在Memcache上⾯保存了⼀个数组,然后获取回来并输出$arr = array('aaa','bbb','ccc', 'ddd');$mem->set('key2', $arr, 0, 60);$val2 = $mem->get('key2');print_r($val2);现在删除⼀个数据,使⽤delte接⼝,参数就是⼀个key,然后就能够把Memcache服务器这个key的数据删除,最后输出的时候没有结果$mem->delete('key1');$val = $mem->get('key1');echo "Get key1 value: " . $val . "<br>";最后我们把所有的保存在Memcache服务器上的数据都清除,会发现数据都没有了,最后输出key2的数据为空,最后关闭连接$mem->flush();$val2 = $mem->get('key2');echo "Get key2 value: ";print_r($val2);echo "<br>";Memcache的使⽤使⽤Memcache的⽹站⼀般流量都是⽐较⼤的,为了缓解数据库的压⼒,让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");

Memcache协议中文版

Memcache协议中文版

Memcache协议中文版写在前头偶然之间看到本文的中英文对照版本,感觉看起来不是很方便,于是花费了半个小时的时间,仔细整理出了独立的中文版本,并记录下来。

协议memcached 的客户端使用TCP链接与服务器通讯。

(UDP接口也同样有效,参考后文的“UDP协议”)一个运行中的memcached服务器监视一些(可设置)端口。

客户端连接这些端口,发送命令到服务器,读取回应,最后关闭连接。

结束会话不需要发送任何命令。

当不再需memcached服务时,要客户端可以在任何时候关闭连接。

需要注意的是,鼓励客户端缓存这些连接,而不是每次需要存取数据时都重新打开连接。

这是因为memcached 被特意设计成及时开启很多连接也能够高效的工作(数百个,上千个如果需要的话)。

缓存这些连接,可以消除建立连接所带来的开销(/*/相对而言,在服务器端建立一个新连接的准备工作所带来的开销,可以忽略不计。

)。

在memcache协议中发送的数据分两种:文本行和自由数据。

文本行被用于来自客户端的命令和服务器的回应。

自由数据用于客户端从服务器端存取数据时。

同样服务器会以字节流的方式传回自由数据。

/*/服务器不用关心自由数据的字节顺序。

自由数据的特征没有任何限制;但是通过前文提到的文本行,这项数据的接受者(服务器或客户端),便能够精确地获知所发送的数据库的长度。

文本行固定以“\r\n”(回车符紧跟一个换行符)结束。

自由数据也是同样会以“\r\n”结束,但是 \r(回车符)、\n(换行符),以及任何其他8位字符,均可出现在数据中。

因此,当客户端从服务器取回数据时,必须使用数据区块的长度来确定数据区块的结束位置,而不要依据数据区块末尾的“\r\n”,即使它们固定存在于此。

键值存储在memcached中的数据通过键值来标识。

键值是一个文本字符串,对于需要存取这项数据的客户端而言,它必须是唯一的。

键值当前的长度限制设定为250字符(当然,客户端通常不会用到这么长的键);键值中不能使用制表符和其他空白字符(例如空格,换行等)。

memcache使用文档

memcache使用文档

Memcache使用指南一线天色天宇星辰概述Memcache 服务为您的应用程序提供了高性能的内存键值缓存,您可通过应用程序的多个实例访问该缓存。

Memcache 对于那些不需要数据库的永久性功能和事务功能的数据很有用,例如临时数据或从数据库复制到缓存以进行高速访问的数据。

Memcache API 与 Danga Interactive 开发的Memcached有类似的功能并兼容。

Memcache API 可通过以下方式让您提高应用程序的性能并减少数据库的负载:∙显著地减少数据库查询的次数。

∙减少使用率非常高的页面的数据库配额的使用。

∙缓存操作量巨大的查询和操作的结果。

∙让使用临时计数器成为可能。

通过使用 Memcache API,您可以为应用程序中的数据创建一致的缓存。

缓存可用于应用程序中的所有实例,而且数据只有通过内存压力(例如缓存中的数据过多)或开发人员设置的缓存政策才能清除。

可以在存储在缓存中的每个键-值对上设置缓存政策。

您可以清除所有缓存或针对每份数据设置缓存过期时间。

Client 类Memcache API 提供一个基于类的接口,以便与其他 Memcache API 兼容。

另请参阅提供相同功能的函数接口。

∙Client()∙实例方法:o set()o set_multi()o get()o get_multi()o delete()o delete_multi()o add()o add_multi()o replace()o replace_multi()o incr()o decr()o flush_all()o get_stats()∙class Client()∙与 Memcache 服务通信的客户端。

∙Client 实例有以下方法:∙set(key, value, time=0, min_compress_len=0)∙设置键的值,与先前缓存中的内容无关。

∙参数:∙key∙要设置的键。

MemcachedClient使用说明

MemcachedClient使用说明

MemcachedClient使⽤说明上⼀篇介绍了Memcached基本使⽤⽅法《》,下⾯介绍java如何操作memcached。

使⽤的是java_memcached-release_2.6.6。

⼀、使⽤⽅法新建项⽬,添加相关jar包:直接上代码了,注释写的很详细,不⽤多说了啊。

package ;import com.danga.MemCached.MemCachedClient;import com.danga.MemCached.SockIOPool;public class MemcachedDemo {public static void main(String[] args) {//memcached服务器String[] servers = {"127.0.0.1:11211","192.168.1.3:11211"};/*** 设置连接池可⽤cache服务器的权重,和server数组的位置⼀⼀对应*/Integer[] weights = {1,2};/*** 这个类⽤来创建管理客户端和服务器通讯连接池,客户端主要的⼯作包括数据通讯、服务器定位、hash码⽣成等都是由这个类完成的。

* 获得连接池的单态⽅法。

这个⽅法有⼀个重载⽅法getInstance( String poolName ),每个poolName只构造⼀个SockIOPool实例。

* 缺省构造的poolName是default。

*/SockIOPool pool = SockIOPool.getInstance();//设置memcached服务器pool.setServers(servers);//设置memcached服务器权重pool.setWeights(weights);//设置容错开关设置为TRUE,当当前socket不可⽤时,程序会⾃动查找可⽤连接并返回,否则返回NULL,默认状态是true,建议保持默认pool.setFailover( true );//设置开始时每个cache服务器的可⽤连接数pool.setInitConn( 10 );//设置每个服务器最少可⽤连接数pool.setMinConn( 5 );//设置每个服务器最⼤可⽤连接数pool.setMaxConn( 250 );/*** 设置连接池维护线程的睡眠时间* 设置为0,维护线程不启动* 维护线程主要通过log输出socket的运⾏状况,监测连接数⽬及空闲等待时间等参数以控制连接创建和关闭。

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运行状态(shell或者telnet)共7页

命令行查看Memcached运行状态(shell或者telnet)共7页

stats查看memcached状态的基本命令,通过这个命令可以看到如下信息:STAT pid 22459 进程IDSTAT uptime 1027046 服务器运行秒数STAT time 1273043062 服务器当前unix时间戳STAT version 1. 4. 4 服务器版本STAT pointer_size 64 操作系统字大小(这台服务器是64位的)STAT rusage_user 0. 040000 进程累计用户时间STAT rusage_system 0. 260000 进程累计系统时间STAT curr_connections 10 当前打开连接数STAT total_connections 82 曾打开的连接总数STAT connection_structures 13 服务器分配的连接结构数STAT cmd_get 54 执行get 命令总数STAT cmd_set 34 执行set 命令总数STAT cmd_flush 3 指向flush_all命令总数STAT get_hits 9 get命中次数STAT get_misses 45 get未命中次数STAT delete_misses 5 delete未命中次数STAT delete_hits 1 delete命中次数STAT incr_misses 0 incr未命中次数STAT incr_hits 0 incr命中次数STAT decr_misses 0 decr未命中次数STAT decr_hits 0 decr命中次数STAT cas_misses 0 cas未命中次数STAT cas_hits 0 cas命中次数STAT cas_badval 0 使用擦拭次数STAT auth_cmds 0STAT auth_errors 0STAT bytes_read 15785 读取字节总数STAT bytes_written 15222 写入字节总数 STAT limit_maxbytes 1048576 分配的内存数(字节)STAT accepting_conns 1 目前接受的链接数STAT listen_disabled_num 0STAT threads 4 线程数 STAT conn_yields 0STAT bytes 0 存储item字节数STAT curr_items 0 item个数 STAT total_items 34 item总数 STAT evictions 0 为获取空间删除item的总数stats items输出各个slab中的item信息。

windows 64位系统配置安装Memcache缓存Windows服务器操作系统 电脑资料.doc

windows 64位系统配置安装Memcache缓存Windows服务器操作系统 电脑资料.doc

windows 64位系统配置安装Memcache缓存Windows效劳器操作系统电脑资料以前介绍过win32位系统配置安装Memcache缓存的方法,下面本文章来给各位介绍64位系统安装配置Memcache缓存的例子,最近要玩Memcache,所以需要Windows 64位下搭建Memcache的开发调试环境,记录下自己安装搭建的过程,发现比Linux中搭建简单多了。

这里是我用Windows 7 64Bit安装Memcache的过程1、安装PHP、Mysql以及Apache,这边环境我就不用多做介绍了,一键环境有很多,几乎不影响Memcache。

(我自己的调试环境是PHPStudy)2、下载安装Memcache,我这里下载的是64位版本。

下载地址:百度网盘(共享了文件夹)a)下载解压之后放在硬盘的目录下,如:D:\memcached .b)然后在运行中输入cmd进入命令行,进入到Memcached.exe 所在的目录,例如:D:\memcachedc)然后在Memcache目录,输入memcached.exe –d install,添加memcached.exe为效劳d)输入memcached.exe -d start,运行memcached程序。

C:\users\Test>d:D:\>cd d:\memcached:\memcache>memcached.exe -d installd:\memcache>memcached.exe -d start Memcahed根本设置参数:-p 监听的端口(默认是11211)-l 连接的IP地址, 默认是本机-d start 启动memcached效劳-d restart 重起memcached效劳-d stop|shutdown 关闭正在运行的memcached效劳-d install 安装memcached效劳-d uninstall 卸载memcached效劳-u 以的身份运行 (仅在以root运行的时候有效)-m 最大内存使用,单位MB。

memcache 用法

memcache 用法

memcache 用法
Memcache 是分布式缓存系统,主要服务于动态Web 应用,以减轻数据库负载。

其运作机理是基于存储键值对的数据结构(在内存中建立一个巨大的hash表,可以存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等)。

以下是Memcache的使用方法:1.添加一个键值对:使用 add 方法,例如:$mem->add('test','123',0,60);。

其中,'test' 是键,'123' 是值,0 是过期时间(单位:秒),60 是缓存时间(单位:秒)。

2.获取一个键的值:使用 get 方法,例如:$mem->get('test');。

这将返回键'test' 的值。

3.覆写已存在的键值对:使用 replace 方法,例如:$mem->replace('test','456',0,60);。

这将会替换键'test' 的值,新的值为'456'。

4.删除一个键值对:使用 delete 方法,例如:$mem->delete('test',60);。

这将删除键'test' 及其对应的值。

请注意,以上只是Memcache 的基础使用方式,实际应用中可能涉及更多复杂的操作和设置。

如果您需要更深入的了解或使用,建议查阅Memcache 的官方文档或相关教
程。

memorycache 用法

memorycache 用法

memorycache 用法[memorycache 用法]本文将详细介绍memorycache 的用法和操作步骤,诸如何创建、读写及删除缓存等等。

1. 什么是memorycache?MemoryCache 是 .NET Framework 中的一个缓存类,它提供了轻量级的内存缓存功能。

通过MemoryCache,我们可以将数据保存在内存中,以提高应用程序的性能和响应速度。

MemoryCache 是线程安全的,可以在多个线程中读取和写入缓存数据。

2. 如何创建MemoryCache?要创建一个MemoryCache 实例,我们可以使用以下步骤:using System.Runtime.Caching;...MemoryCache memoryCache = MemoryCache.Default;这将创建一个名为"Default" 的MemoryCache 实例,它是全局静态实例,可以在应用程序中共享。

我们也可以创建自定义的MemoryCache 实例,方式如下:var cacheSettings = new NameValueCollection{{ "CacheMemoryLimitMegabytes", "200" }, 设置缓存限制为200MB { "PhysicalMemoryLimitPercentage", "50" } 设置缓存使用物理内存的百分比上限为50%};MemoryCache memoryCache = new MemoryCache("CustomCache", cacheSettings);这将创建一个名为"CustomCache" 的自定义MemoryCache 实例,我们可以根据需求调整缓存限制和使用内存的百分比上限。

3. 如何添加和读取缓存数据?下面是向MemoryCache 添加和读取缓存数据的基本步骤:string key = "CacheKey"; 缓存键string value = "CacheValue"; 缓存值添加缓存数据memoryCache.Add(key, value, DateTimeOffset.Now.AddMinutes(10));读取缓存数据object cachedValue = memoryCache.Get(key);在添加缓存数据时,我们需要指定一个缓存键、缓存值以及过期时间。

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中,以减少对数据库的访问次数。

java版的memcached client及使用文档

java版的memcached client及使用文档

假设我们有3台memcached 服务器,server1 和server2 有3GB 的内存空间,server3 有2GB 的内存空间.下面程序说明怎么来创建客户端.import com.danga.MemCached.*;public class MyClass {// 创建一个memcached 客户端对象protected static MemCachedClient mcc = new MemCachedClient();// 创建 memcached连接池static{ // 指定memcached服务地址String[] servers ={ ":1121",":1121",":1121" };// 指定memcached服务器负载量Integer[] weights ={ 3, 3, 2 };// 从连接池获取一个连接实例SockIOPool pool = SockIOPool.getInstance();// 设置服务器和服务器负载量pool.setServers( servers );pool.setWeights( weights );// 设置一些基本的参数//设置初始连接数5 最小连接数5 最大连接数250//设置一个连接最大空闲时间6小时pool.setInitConn( 5 );pool.setMinConn( 5 );pool.setMaxConn( 250 );pool.setMaxIdle( 1000 * 60 * 60 * 6 );// 设置主线程睡眠时间// 每隔30秒醒来然后// 开始维护连接数大小pool.setMaintSleep( 30 );// 设置tcp 相关的树形// 关闭nagle算法// 设置读取超时3秒钟 set the read timeout to 3 secs // 不设置连接超时pool.setNagle( false );pool.setSocketTO( 3000 );pool.setSocketConnectTO( 0 );// 开始初始化连接池pool.initialize();// 设置压缩模式//如果超过64k压缩数据mcc.setCompressEnable( true );mcc.setCompressThreshold( 64 * 1024 );}public static void examples() {mcc.set( "foo", "This is a test String" );String bar = mcc.get( "foo" );}MemCachedClient 类常用的方法说明创建client对象设置参数:MemCachedClient mc = new MemCachedClient();//压缩模式mc.setCompressEnable(true);// 如果cache数据大于4 KB 就启用压缩mc.setCompressThreshold(4096);// 基本类型tostring方法// 通常不需要设置mc.setPrimitiveAsString(true);存储一个对象:MemCachedClient mc = new MemCachedClient();String key = "cacheKey1";Object value = SomeClass.getObject();mc.set(key, value);用客户端hashcode 存储一个对象:MemCachedClient mc = new MemCachedClient();String key = "cacheKey1";Object value = SomeClass.getObject();Integer hash = new Integer(45);mc.set(key, value, hash);set方法:在cache中存储一个指定对象add 和replace 方法功能差不多add -- 如果不存在这个key的对象,将会存储一个对象到cache中 replace --只有当存在指定key对象的时候会覆盖已有对象删除一个对象:MemCachedClient mc = new MemCachedClient();String key = "cacheKey1";mc.delete(key);结合hashcode 删除一个对象:MemCachedClient mc = new MemCachedClient();String key = "cacheKey1";Integer hash = new Integer(45);mc.delete(key, hashCode);怎么cache计数,增减计数:MemCachedClient mc = new MemCachedClient();String key = "counterKey";mc.storeCounter(key, new Integer(100));System.out.println("counter after adding 1: " mc.incr(key)); System.out.println("counter after adding 5: " mc.incr(key, 5)); System.out.println("counter after subtracting 4: " mc.decr(key, 4));System.out.println("counter after subtracting 1: " mc.decr(key));利用客户端的hashcode存储计数增减计数:MemCachedClient mc = new MemCachedClient();String key = "counterKey";Integer hash = new Integer(45);mc.storeCounter(key, new Integer(100), hash);System.out.println("counter after adding 1: " mc.incr(key, 1, hash)); System.out.println("counter after adding 5: " mc.incr(key, 5, hash)); System.out.println("counter after subtracting 4: " mc.decr(key, 4, hash));System.out.println("counter after subtracting 1: " mc.decr(key, 1, hash));获取一个对象:MemCachedClient mc = new MemCachedClient();String key = "key";Object value = mc.get(key);用客户端hashcode获取一个对象:MemCachedClient mc = new MemCachedClient();String key = "key";Integer hash = new Integer(45);Object value = mc.get(key, hash);MemCachedClient mc = new MemCachedClient();String key = "key";Integer hash = new Integer(45);Object value = mc.get(key, hash);从cache 中获取多个对象MemCachedClient mc = new MemCachedClient();String[] keys ={ "key", "key1", "key2" };Mapvalues = mc.getMulti(keys); 用客户端hashcode 从cache中获取多个对象MemCachedClient mc = new MemCachedClient();String[] keys = { "key", "key1", "key2" };Integer[] hashes ={ new Integer(45), new Integer(32), new Integer(44) };Mapvalues = mc.getMulti(keys, hashes);清空所有的对象MemCachedClient mc = new MemCachedClient();mc.flushAll();得到服务器memcached的状态信息MemCachedClient mc = new MemCachedClient();Map stats = mc.stats();注意点1:Failover/Failback当一个memcached服务器失效的时候客户端默认会failover另一个服务去.如果失效的服务器恢复运行,客户端会返回到原来连接的服务器.如果你不想用这个功能设置下面的参数pool.setFailover( false );pool.setFailback( false );2:序列化BooleanByteStringCharacterStringBufferStringBuilderShortLongDoubleFloatDatejava默认的类型没有实现序列化可以设置mcc.setPrimitiveAsString( true )替代.实践过程中得出的一个经验,项目中model 对象implement Externalizable 实现序列化,可以节省cache 对象的大小。

memcachedclient 默认时间单位

memcachedclient 默认时间单位

memcachedclient 默认时间单位MemcachedClient是一个用于与Memcached服务器进行交互的Java 客户端库。

在Memcached中,存储的数据可以设置过期时间,以控制数据在服务器上的存储时间。

默认情况下,MemcachedClient使用的时间单位是秒。

在使用MemcachedClient进行数据存储时,可以通过以下方法指定数据的过期时间:1. set方法:使用set方法可以设置键值对,并指定过期时间。

过期时间的单位是秒。

```javaMemcachedClient client = new MemcachedClient(new InetSocketAddress("localhost", 11211));client.set("key", 3600, "value");```上述代码中,将键为"key"、值为"value"的数据存储到Memcached服务器,并设置过期时间为3600秒(即1小时)。

2. add方法和replace方法:add方法和replace方法也可以用于存储数据,并指定过期时间。

过期时间的单位同样是秒。

```javaMemcachedClient client = new MemcachedClient(new InetSocketAddress("localhost", 11211));client.add("key", 3600, "value");client.replace("key", 3600, "new value");```上述代码中,add方法将在键值对不存在时存储数据,replace方法将在键值对存在时替换数据。

两种方法都可以指定过期时间。

Memcached命令详细解释

Memcached命令详细解释
-rwxr-xr-x 1 root root 202029 Nov 15 23:07 /usr/local/bin/memcached
windows下的安装
下载windows下的memcached程序:/memcached-win32/
解压之后双击安装即可。安装完毕可以在控制面板–》管理工具–》服务中看到已安装的服务信息:
1)安装libevent
cd /opt/install
tar zxvf libevent-1.4.12-stable.tar.gz
cd libevent-1.4.12-stable
./configure
make
make install
2)安装memcached,将软件上传到/opt文件夹下
VALUE userid 0 5 10
54321
END
#修改版本号位10的key=userid数据
cas userid 0 0 5 10
55555
#修改成功
STORED
#删除key=userid的数据
delete userid
#删除成功
DELETED
3)添加开机自启服务,在/etc/rc.local文件中加载启动命令,参数需要根据实际情况指定,如
管理说明
1)启动参数说明
如下命令是root用户以守护进程的形式启动 memcached,为其分配 256M 内存
memcached -d -m 256 -u root –c 10240
memcached -d -m 2048 -u root -c 10240
主要启动参数说明
-d
2)管理参数说明

Memcached_Client_HandBook

Memcached_Client_HandBook

Memcached Client 使用手册Author: cenwenchuEmail: wenchu.cenwc@Blog:/cenwenchu79/Project: /p/memcache-client-forjava/目录Cache Client接口定义 (2)Cache Client依赖及配置 (2)Cache Client第三方依赖 (2)Cache Client单客户端配置 (3)Cache Client集群配置 (4)Cache Client Demo (5)Cache Manager (5)使用注意 (6)附录: (6)接口定义说明: (6)Cache Client接口定义图 1 Memcached Cache Client接口类图ICache和IMemcachedCache接口是Cache的基础接口,定义了基本的Cache操作,详细地说明参看附录,使用方式参看Demo和使用注意。

ICacheManager是Cache 生命周期管理类,一个应用只需要一个ICacheManager来管理所有的Cache,具体介绍参看Cache Demo中的Cache Manager介绍。

Cache Client依赖及配置Cache Client第三方依赖commons-logging-1.0.4.jar or high versionlog4j-1.2.12.jar or high versioncodehaus/woodstox/wstx-asl-3.2.1.jar or high versioncodehaus/staxapi/stax-api-1.0.1.jar or high version2.5.2版本以后还需要caucho/hessian/hessian-3.2.0.jar or high versionCache Client支持默认(在Classpath中查找Memcached.xml作为客户端配置)和指定配置文件。

Memcached命令行用法

Memcached命令行用法

Memcache 的命令行用法1、启动Memcache 常用参数memcached 1.4.3 -p <num> -U <num> 设置端口号(默认不设置为: 11211) UDP 监听端口(默认: 11211, 0 时关闭) -l <ip_addr> 绑定地址(默认:所有都允许,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1 就只能本机访问) -d 独立进程运行-u <username> 绑定使用指定用于运行进程<username> -m <num> -P <file> 如:在linux 下:./usr/local/bin/memcached -d -u jb-mc -l 192.168.1.197 -m 2048 -p 12121 在window 下:d:\App_Serv\memcached\memcached.exe -d RunService -l 127.0.0.1 -p 11211 -m 500 在windows 下注册为服务后运行:sc.exe create jb-Memcached binpath= “d:\App_Serv\memcached\memcached.exe -d RunService -p 11211 -m 500〃start= auto net start jb-Memcached 允许最大内存用量,单位M (默认: 64 MB) 将PID 写入文件<file>,这样可以使得后边进行快速进程终止, 需要与-d 一起使用2、连接:telnet 127.0.0.1 11211 不要说不会用这个?3、写入memcache <command name> <key> <flags> <exptime> <bytes>\r\n <data block>\r\n a) <command name> 可以是”set”, “add”, “replace”。

memcached内存管理与删除机制及服务器实现

memcached内存管理与删除机制及服务器实现

memcached内存管理与删除机制及服务器实现memcached是一种高性能、分布式的缓存系统,常用于提升Web应用的访问速度。

它基于内存存储数据,并采用删除机制来管理内存使用。

本文将详细介绍memcached的内存管理与删除机制,并探讨其服务器实现。

1. memcached的内存管理机制memcached的内存管理机制主要是通过使用LRU(Least Recently Used,最近最少使用)算法来实现的。

该算法会根据数据使用的频率和时间进行筛选,将最少使用的数据淘汰出内存。

在memcached中,内存分为不同的内存页(memory page),页的大小一般是固定的,比如1MB。

当增加新的数据时,memcached会将数据按页进行划分,如果某一页内存已满,则会将其它页内的较不常用的数据淘汰掉,以腾出空间存储新数据。

2. memcached的删除机制memcached采用延迟删除(lazy deletion)的策略来删除数据。

具体来说,当数据过期或者内存不足时,memcached并不立即删除数据,而是将过期或不常用的数据标记为“过期”或“删除”。

这样,在后续获取数据时,如果发现数据已标记为“过期”或“删除”,则不返回该数据,而是返回一个空值。

延迟删除机制的好处是避免了较高的删除开销,使得memcached能够更快速地访问和存储数据。

然而,这也意味着一些已过期但尚未被删除的数据仍会占用内存空间,因此在应用设计中需要考虑数据过期的策略,定期清理不再需要的数据。

3. memcached的服务器实现memcached服务器使用C语言编写,以支持高性能和低延迟的特性。

服务器的实现主要包括网络模块、存储模块和缓存管理模块。

网络模块负责处理客户端的连接请求和数据传输。

当有客户端连接到服务器时,服务器会启动一个监听线程,并通过一个事件循环来处理客户端请求和响应。

网络模块使用非阻塞的I/O模型,以便同时处理多个客户端的请求,提高服务器的并发处理能力。

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

MemCache Client User GuideAuthor:wenchu.cenEmail: wenchu.cenwc@使用Memcache客户端需要依赖的第三方类库:commons-logging-1.0.4.jar or high versionlog4j-1.2.12.jar or high versioncodehaus/woodstox/wstx-asl-3.2.1.jar or high versioncodehaus/staxapi/stax-api-1.0.1.jar or high version一.配置首先,Memcache客户端在使用前需要有配置文件作为初始化的依据。

配置文件名称为“memcached.xml”(新版本可以指定配置文件名称和路径,具体可参看后面demo 代码),支持在Classpath下有多个配置文件,Cache管理器在初始化时会寻找Classpath 下以此命名的文件。

配置文件使用说明:基础配置:<?xml version="1.0" encoding="UTF-8"?><memcached><client name="mclient0" compressEnable="true" defaultEncoding="UTF-8" socketpool="pool0"><errorHandler>com.alisoft.xplatform.asf.cache.memcached.MemcachedErrorHandler</errorHandler></client><socketpool name="pool0"failover="true" initConn="5"minConn="5" maxConn="250" maintSleep="5000"nagle="false" socketTO="3000" aliveCheck="true"><servers>10.2.224.36:33001,10.2.224.46:33001</servers><weights>3,7</weights></socketpool></memcached>1.创建memcached的标签。

2.创建client的标签。

注意:name 属性是程序中使用Cache的唯一标识。

socketpool 属性将会关联到后面的socketpool配置。

errorHandler 可选,用来处理出错情况。

注意在Tag中不要使用空格或者Tab键。

3.创建socketpool的标签。

注意:name 属性和client 配置中的socketpool 属性相关联。

maintSleep属性是后台线程管理SocketIO池的检查间隔时间,如果设置为0,则表明不需要后台线程维护SocketIO线程池,默认需要管理。

socketTO 属性是Socket操作超时配置,单位ms。

aliveCheck 属性表示在使用Socket以前是否先检查Socket状态。

4.创建servers 标签作为socketPool的子标签.设置memcache服务端实例地址,支持多个地址设置,例如“10.2.224.36:33001”或“10.2.224.36:33001, 10.2.224.46:33002”.5.创建weights 标签作为socketPool的子标签(可选),它表明了上面设置的服务器实例的Load权重. 例如<weights>3,7</weights> 表示30% load 在10.2.224.36:33001, 70% load 在10.2.224.46:33001好了,基础的配置就如上。

现在可以直接到第二章节去学习使用Memcache客户端,或者继续看如何配置Cluster。

集群配置<?xml version="1.0" encoding="UTF-8"?><memcached><client name="mclient0" compressEnable="true" defaultEncoding="UTF-8" socketpool="pool0"><errorHandler>com.alisoft.xplatform.asf.cache.memcached.MemcachedErrorHandler</errorHandler></client><client name="mclient0-bck"compressEnable="true"defaultEncoding="UTF-8"socketpool="pool0-bck"> <errorHandler>com.alisoft.xplatform.asf.cache.memcached.MemcachedErrorHandler</errorHandler></client><socketpool name="pool0"failover="true" initConn="5"minConn="5" maxConn="250" maintSleep="5000"nagle="false" socketTO="3000" aliveCheck="true"><servers>10.2.224.36:33001,10.2.224.46:33001</servers></socketpool><socketpool name="pool0-bck" failover="true" initConn="5" minConn="5" maxConn="250"maintSleep="5000"nagle="false" socketTO="3000" aliveCheck="true"><servers>10.2.224.36:33002,10.2.224.46:33002</servers></socketpool><cluster name="cluster1" mode="active">//mode = active,standby<memCachedClients> mclient0, mclient0-bck</memCachedClients></cluster></memcached>Memcache是集中式的Cache,因此它存在单点问题。

为了解决单点问题,Memcache 客户端支持配置集群,如果配置两个或者多个客户端在一个集群中,那么将数据放入任何一个集群的客户端中,都可以从其他集群中的客户端获取到数据(在获取数据时将会根据key作Hash算法来选择集群的客户端为程序服务,实现类似于分布式节点的功能)集群配置很简单. 1.创建cluster标签2. 创建memCachedClients 标签作为cluster 的子标签,然后将客户端配置到memCachedClients 标签中。

3.可以配置cluster mode,active支持多个节点可以修复性复制(不过会影响一点性能),standby不支持节点修复性复制。

两者就是冷备份和热备份的区别。

(节点修复性复制指的是当A,B两台机器作为集群的时候,如果A出现了问题,系统会去B获取数据,当A正常以后,如果应用在A中没有拿到数据可以去B获取数据,并且复制到A上,这种方式也是一种lazy的复制。

)二.使用客户端的Demo简单使用:public void test(){ICacheManager<IMemcachedCache> manager;manager = CacheUtil.getCacheManager(IMemcachedCache.class,MemcachedCacheManager.class.getName());manager.setConfigFile("memcached1.xml");//可以指定配置文件名manager.start();try{IMemcachedCache cache = manager.getCache("mclient");cache.put("key", "value");org.junit.Assert.assertEquals(cache.get("key"), "value");}Finally{manager.stop();}}注意:Cache Manger 不要创建多个,一个实例就可以满足应用的需求,它会负责创建和初始化所有配置在Classpath下配置文件中的客户端, Cache Manager 也可以由开发者自己实现,只需要在你的jar中META-INF/services 目录里建立文件名为“com.alisoft.xplatform.asf.cache.ICacheManager”的文件,然后将将实现类全路径写在这个文件中即可,框架将会自动载入。

Cache Manger start 表示初始化所有的配置过的客户端,stop 表示释放Cache Pool中客户端的资源。

相关文档
最新文档