Memcached是高性能、分布式的内存对象缓存系统
Memcached的服务器提供一个存储结构,在这个结构中,数据按照键值来存储,而检索功能通过使用一个散列查找表来实现。
Memcached的客户端以并行的方式把请求发送到相应的服务器上,然后每台服务器使用自己的散列键查找表来检索存储条目,随后把结果发送回客户端,接着客户端将这些结果聚集在一起以供应用程序使用。
Memcached对CPU要求不太高
使用memcached的方式:
1.通读缓存
检索数据时,首先检查缓存,缓存中有数据,直接返回,没有数据,读数据库,将得到的数据存储到缓存中,然后将数据返回给用户,所以一个读取操作不仅获取数据,而且确保后续读取操作能够在缓存中找到所需数据。
2.连续写入缓存
将数据写入缓存,然后另一个不同进程把已存储的数据从memcached读取到数据库中。
Memcached的操作:
Set:根据给定的键为其设置值,而不管其是否存在,此外还可以设置这个值的到期时间。
Get:通过键值取值
Add:如果对象未存在,根据给定的键值添加一个值
Replace:如果对象存在,根据给定的键替换其值
Delete:删除一个根据给定键存储的值
Increment:把给定的键的值增加一个定量。可使用该选项作为一个序列,或主要的计数器
Decrement:把给定的键的值减少一个定量。可使用该选项作为一个序列,或主要的计数器
State:返回memcached服务器的统计信息
[@more@]Normal07.8 磅02falsefalsefalseEN-USZH-CNX-NONEMicrosoftInternetExplorer4Libmemcached 是一个用c语言编写的memcached客户端库。
Libmemcached包含若干命令行工具,可以用来调试memcached群集以及评估它的性能。
memcat:把键的值复制到标准输出
memflush:清除服务器的内容
memrm:从服务器上删除一个键或者多个键
memcp:将文件复制到一台memcached服务器上
memstat:将服务器的状态信息转储到标准输出
memslap:在memcached群集上生成测试负载
例如:
#memcat –servers=localhost:22122,localhost:11211 somekey anotherkey
This is a value in memcached
123456789
其中somekey anotherkey是要查看键名
#memcat –servers=localhost:22122 somekey anotherkey
123456789
#memcat –servers=localhost:11211 somekey anotherkey
This is a value in memcached
发现两种情况都提取一个值,说明anotherkey通过运行在11211端口的memcached服务器获取的,somekey则是通过运行22122端口的memcached服务器获取的。
#memflush –-servers=localhost:22122,localhost:11211
#memcat –servers=localhost: 22122,localhost:11211
somekey anotherkey
#memcp –servers=localhost:11211 /etc/redhat-release
#memcat –servsers=locahost:11211 redhat-release
CentOS release 5.2 (Final)
#memstat –servers=localhost:11211
显示内容为memcached服务器的状态
#memrm –servers=localhost:11211 redhat-release
#memcat –servers=localhost:11211 redhat-release
#memslap –-help
memcached functions for mysql
特点:这些函数都是由c语言编写的
安装:
#./configure
--with-mysql=/usr/local/mysql/bin/mysql_config
--libdir=/usr/local/mysql/lib/mysql/plugin
make
make install
--with-mysql告诉配置程序到何处去查找mysql_config程序
--libdir编译后的共享库的安装目录位置
另外,为了能够加载共享库,默认情况下,并不从库路径的目录中加载动态库,例如:
如果需要添加一个位于目录/usr/local/mysql/lib/mysql/plugin中的条目,就应该在/etc/ld.so.conf.d中添加一个mysql.conf文件,然后运行ldconfig来创建必须得连接并缓存到最近找到的共享库中
动态库安装完毕就需要安装UDF
方法两种
1.Sql脚本安装
mysql –u root –p < sql/install_functions.sql
sql/install_functions.sql可以在源代码发行版本的sql目录中找到
2.perl安装
./utils/install.pl –u root –p root –s
–s表示非交互方式的静默安装
安装了函数就可以在mysql命令行中操作了
各个函数的应用:
mysql> select * from mysql.func
mysql> select memc_get (‘abc’);
mysql> set @test=memc_get (‘abc’);
mysql> select @test;
memc_servers_set 函数创建一个与正在被使用的memcached服务器连接。
mysql> SELECT memc_servers_set (‘127.0.0.1:11211,127.0.0.1:22122’);
一旦连接,就可以开始使用所有其他函数来存储和检索值了
memc_server_count 函数不带任何参数,返回连接的memcached服务器的数量
mysql> SELECT memc_server_count ();
memc_set函数用来给键设值
mysql> SELECT memc_set (‘foo’, ‘xyz’, 5);存储键foo的值为xyz,到期时间为5秒
mysql> SELECT memc_set (‘foo’, ‘xyz’);
memc_set_by_key函数是memc_set函数的扩展,增加了主服务器键,允许用户将所存的值按照服务器进行分组
mysql> SELECT memc_set_by_key(‘A’,’key1’,’test’);
memc_add 和 memc_add_by_key 函数为未设置的键设值,成功返回0,失败非零
memc_add (‘key’,value);
memc_add_by_key (‘master key’,‘key’,value,expiration);
memc_replace 和 memc_ replace _by_key 函数为设置过的键改值,成功返回0,失败非零
memc_ replace (‘key’,value);
memc_ replace _by_key (‘master key’,‘key’,value,expiration);
memc_delete 和 memc_ delete _by_key 删除以键存储的值,删除成功返回0,否则非零
memc_ delete (‘key’,value);
memc_ delete _by_key (‘master key’,‘key’,value,expiration);
memc_get 和 memc_ get _by_key 取值
memc_ get (‘key’,value);
memc_ get _by_key (‘master key’,‘key’);
memc_ increment 增加一个增数值
memc_ increment (‘key’);执行一次该函数,key键值所对应的数值加1
memc_ increment (‘key’,value); 执行一次该函数,key键值所对应的数值加value
memc_decrement 与 memc_ increment 功能相反
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23168012/viewspace-1052713/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/23168012/viewspace-1052713/