MemCached 我的总结linux
1. MemCached 简介算法
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它经过在内存中缓存数据和对象来减小读取数据库的次数,从而提升动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap,全部数据都放在储存在内存中。数据库
2. 使用MemCached准备缓存
Memcached 插件,Memcached彻底依赖它,在使用Memcached必须启动这个插件。双击。安全
这表明 Memcached插件已经启动成功,若是插件中止,那么全部的内存数据将会被销毁。服务器
3. MemCached 用到的 jar session
4. MemCached 流程socket
5. MemCached 实际使用我的思路分布式
MemCacheUtil 负责Cache 底层操做ide
MemCacheSupport 负责调用Util 减化操做、
公共初始化数据↓
建立 公共数据类
在MemCacheUtil进行初始化
根据特殊须要↓
EntityCache 实体CacheDao
EntityCacheImpl 实体CacheDaoImpl 继承 MemCacheSupport
6. MemCaChed 配置
服务器端口:能够设置多个Ip,实现分布式缓存
memcache.server=127.0.0.1:11211
缓存大小
Memcache.weights = {1}
缓冲的基本信息
初始链接数、最小最大链接数、最大处理时间
memcache.initConn=20
memcache.minConn=10
memcache.maxConn=50
线程休眠时间
memcache.maintSleep=3000
禁止使用nagle算法
memcache.nagle=false
请求缓存超时时间
memcache.socketTO=3000
当一个服务器请求超时是否去访问另外一台
memcache.failover=true
最大处理时间
memcache.maxidle=1000*30*30
检查服务器是否失效
memcache.alivecheck=true
7. MemCached 主要类
Socke 链接池实例对象
SockIOPool
得到SockIOPoo 2 种方式
1.代码块
SockIOPool pool = SockIOPool.getInstance();
pool.setxxx(xxx);
pool.initialize();
2.Spring注入
MemCachedClient MemCached主要操做对象
得到MemCachedClient
得到单例对象,防止数据冲突,节省内存,根据业务需求实际状况而定
8. MemCachedClient 方法详解
9. MemCached 服务器
启动Memcache 经常使用参数
-p <num> 设置端口号(默认不设置为: 11211)
-U <num> UDP监听端口 (默认: 11211, 0 时关闭)
-l <ip_addr> 绑定地址 (默认:全部都容许,不管内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问)
-d duli进程运行
-u <username> 绑定使用指定用于运行进程 <username>
-m <num> 容许最大内存用量,单位M (默认: 64 MB)
-P <file> 将PID写入文件<file>,这样可使得后边进行快速进程终止, 须要与 -d 一块儿使用
如:
在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
telnet链接以及请求命令
须要保证 Memcached 服务已打开。
链接成功
telnet写入memcache命令格式
<command name> <key> <flags> <exptime> <bytes>\r\n <data block>\r\n
1.<command name> 能够是”set”, “add”, “replace”
2.<key> 保存数据的key
3.<flags> 是一个16位的无符号的整数(以十进制的方式表示)。
4.<exptime> 过时的时间。0表示存储的数据永远不过期
5.<bytes> 须要存储的字节数 ,当用户但愿存储空数据时,能够为0
6.最后客户端须要加上”\r\n”做为”命令头”的结束标志。
telnet响应命令
1.STORED 表示存储成功
2.NOT_STORED 表示存储失败,可是该失败不是因为错误
其余操做命令方法同上
Telnet 其余命令
Stats 状态
stats reset 清空统计数据
Flush_all 清空数据
Quit 退出telnet
10. MemCached 应用场景
适用于 MemCached ↓
a.若是网站包含了访问量很大的动态网页,于是数据库的负载将会很高。因为大部分数据库请求都是读操做,那么memcached能够显著地减少数据库负载。
b.利用memcached能够缓存 session数据 、临时数据以减小对他们的数据库写操做。
c.缓存一些很小可是被频繁访问的文件。
不适用 MemCached ↓
a.缓存对象的大小大于1MB
b. key的长度大于250字符
c.应用运行在不安全的环境中
Memcached未提供任何安全策略,仅仅经过telnet就能够访问到memcached。若是应用运行在共享的系统上,须要着重考虑安全问题。
d.业务自己须要的是持久化数据或者说须要的应该是database