使用MEMCACHED实现缓存
什么是memcached
Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。
Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。
Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果。
Memcached简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的API兼容大部分流行的开发语言。
本质上,它是一个简洁的key-value存储系统。
一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。
windows下安装memcached
1、下载服务端memcached软件
32bit:下载memcached-win32-1.4.4-14.zip(直接下)里面包含6个文件,将解压后的文件夹随便放在什么位置(例如:D:\memcached)。
memcached-win32-1.4.4-14.zip下载页面:http://blog.couchbase.com/memcached-144-windows-32-bit-binary-now-available
2、以管理员身份运行 cmd.exe,并转至memcached所在文件夹
比如:
cd D:\memcached
注意:如果不以管理员身份运行,将得到报错“failed to install service or service already installed”
3、安装memcached
d:\memcached memcached.exe -d install
(之后屏幕无任何提示,可以再[控制面板]->[管理工具]->[服务]中查看到memcached)
4、启动memcached
(1)启动方法1:
d:\memcached> memcached.exe -d start
之后屏幕无任何提示,但是在“任务管理器”中勾选“显示所有用户进程”,此时可以看到memcached.exe进程正在运行
默认端口11211,外部访问需要开放该端口,否则无法成功连接。
(2)启动方法2:
[控制面板]->[管理工具]->[服务] 找到 memcached 服务,双击它打开如下图
启动类型:选择【自动】
服务状态:点击下面的【启动】
备注:可执行文件的路径和我上面所说的路径有些区别可以忽略
5、memcached基本参数设置
-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:\memcached> memcached.exe -m 1 -d start
6、停止memcached
D:\memcached> memcached.exe -d stop
7、卸载memcached
D:\memcached> memcached.exe -d uninstall
8、修改参数
windows下需要通过修改注册表信息进行设置,打开注册表,找
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached
在其中有一个“ImagePath”项,值为:
"D:\memcached\memcached.exe" -d runservice
在后面加上“-m 1024 -c 2048 -p 11210”。等即可。重启服务后生效
通过java语言操作memcached
三种API的比较
(1)较早推出的memcached JAVA客户端API,应用广泛,运行比较稳定。
(2)A simple, asynchronous, single-threaded memcached client written in java. 支持异步,单线程的memcached客户端,用到了java1.5版本的concurrent和nio,存取速度会高于前者,但是稳定性不好,测试中常 报timeOut等相关异常。
(3)XMemcached同样是基于java nio的客户端,java nio相比于传统阻塞io模型来说,有效率高(特别在高并发下)和资源耗费相对较少的优点。传统阻塞IO为了提高效率,需要创建一定数量的连接形成连接 池,而nio仅需要一个连接即可(当然,nio也是可以做池化处理),相对来说减少了线程创建和切换的开销,这一点在高并发下特别明显。因此 XMemcached与Spymemcached在性能都非常优秀,在某些方面(存储的数据比较小的情况下)Xmemcached比 Spymemcached的表现更为优秀,具体可以看这个Java Memcached Clients Benchmark。
使用XMemcached的示例代码
1. 添加maven依赖
<dependency>
<groupId>com.googlecode.xmemcached</groupId>
<artifactId>xmemcached</artifactId>
<version>2.4.0</version>
</dependency>
2. 示例代码
MemcachedClientBuilder
memcachedClientBuilder = new XMemcachedClientBuilder("localhost:11211");
MemcachedClient client = memcachedClientBuilder.build();
//存入一个字符串,第一个参数为key,第二个参数为过期时间,单位为秒,0代表一个月
//第三个参数为具体的值
client.add("stringKey",0,"这是我的字符串");
//从memcached服务器中根据一个键获取一个字符串值
String s = client.get("stringKey");
System.out.println(s);
//存入一个List集合
List list = new ArrayList();
list.add("aa");
list.add("bb");
client.add("list",0,list);
//根据key获取一个list
list = client.get("list");
System.out.println(list);
//存入一个对象,如果需要存入一个对象,该对象必须是可序列化的
//java中通过实现接口java.io.Serializable 来代表该类可序列化
// class Student implements java.io.Serializable
Student stu = new Student();
stu.setId(12);
stu.setName("张三");
client.add("obj",0,stu);
System.out.println(client.get("obj"));
使用MEMCACHED实现缓存的更多相关文章
- Memcached 数据缓存系统
Memcached 数据缓存系统 常用命令及使用:http://www.cnblogs.com/wayne173/p/5652034.html Memcached是一个自由开源的,高性能,分布式内存对 ...
- memcached搭建缓存系统
Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能. 二.适用场合 1.分布式应用.由于memca ...
- 缓存应用--Memcached分布式缓存简介
一. 什么是Memcached Memcached 是一个高性能的分布式内存 对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象 来减少读取数据库的次数,从而提供动态. ...
- 合理使用Memcached进行缓存部署
Memcached是danga.com(运营 LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能.关于这个东西,相信很多人都用过,本 文意在通 ...
- MemCached高级缓存
MemCached高级缓存配置 Memcache相关介绍: memcache 是一个高性能的分布式的内存对象缓存系统,它能够存储各种各样的的数据,包括图片,视频,文件等等.缓存功能. DB.数据源-- ...
- 使用java5的注解和Sping/AspectJ的AOP 来实现Memcached的缓存
使用java5的注解和Sping/AspectJ的AOP 来实现Memcached的缓存 今天要介绍的是Simple-Spring-Memcached,它封装了对MemCached的调用,使MemCa ...
- memcached分布式缓存系统
在数据驱动的Web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载.缓存是解决这个问题的好办法.但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵活.此时 ...
- 在ubuntu16中部署Django使用memcached作为缓存
Django支持很多缓存系统,如 文件系统缓存. 数据库缓存. 内存缓存(Memcached),其中,Memcached是最快的,没有之一,是绝配.因为所有的缓存数据都放在内存,没有了IO延迟,也没有 ...
- php -- memcached 内存缓存
一.memcached 简介 在很多场合,我们都会听到 memcached 这个名字,但很多同学只是听过,并没有用过或实际了解过,只知道它是一个很不错的东东.这里简单介绍一下,memcached 是高 ...
- Memcached内存缓存技术
Memcached是什么,有什么作用? Memcached是一个开源的.高性能的内存缓存软件,从名称上看Mem就是内存的意思,而Cache就是缓存的意思. Memcached通过在事先规划好的内存空间 ...
随机推荐
- java特殊运算符
按位运算符 定义:按位运算符是来操作整数基本数据类型中的单个“比特”(bit),即二进制位,位运算符会对两个参数中对应的位执行布尔代数运算,并最终生成一个结果. 分类:与(&).或(|).异或 ...
- leetcode 76最小覆盖子串
time O(n) spaceO(n) 的方法: 还是借助哈希表,所有字母初始化为0,将t中出现的所有字母次数全都记录在哈希表里: 采用双指针,分别为一个头指针head,和尾指针tail.flag记录 ...
- redis cluster 集群 安装 配置 详解
redis cluster 集群 安装 配置 详解 张映 发表于 2015-05-01 分类目录: nosql 标签:cluster, redis, 安装, 配置, 集群 Redis 集群是一个提供在 ...
- surface book2 添加自定义分辨率
surface book2 13.5英寸 是3:2的屏幕, 因为默认分辨率3000*2000实在是太高了,看字的时候眼睛有点吃不消 即使开启windows的自定义缩放也有点难受,加上windows ...
- 四十七:数据库之alembic数据库迁移工具的基本使用
在一般情况下,如果修改了模型,如增加或者删除了字段,SQLAlchemy是不会更新的,这就需要使用alembic来实现 使用alembic步骤:一:定义好模型二:使用alembic创建一个仓库:ale ...
- sorted&filter&map
python里列表的sort和内置的sorted函数,都可以进行排序,列表的sort方法是在原有的列表上进行排序,sorted是会返回一个新的对象 persons = [ {'name': '小明', ...
- Python 的列表生成器
列表生成器为创建列表提供了一种简洁的方式. 比如说,我们可以这样实现一个平方数列表 squares=[x**2 for x in range(10)] 或者这样迭代一个字符串来生成列表 >> ...
- 实现Servlet接口
1 右键项目->Build Path->Configure Build Path 2 Add Library...->Server Runtime 3 Apache Tomcat-& ...
- mysql linux环境
创建新用户 create user jnroot@'%' identified by 'Yc@edc#sJn';创建数据库 create database price_monitor DEFAULT ...
- python学习之内置函数(二)
4.7.3 内置函数(2) int() str() bool() set() list():将一个可迭代对象转化为列表 tuple():将一个可迭代对象转换成元组 dic(): 通过相应的方式创建字典 ...