文档章节

初学 Java MemCache 自己的总结。

HelloWordToo
 HelloWordToo
发布于 2015/08/20 15:06
字数 1109
阅读 1904
收藏 15
点赞 1
评论 2

 

 

 

 

 

MemCached 个人总结

 

 

 

 

 

 

 

 

1. MemCached 简介

 

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap所有数据都放在储存在内存中。

 

2. 使用MemCached准备

 

Memcached 插件,Memcached完全依赖它,在使用Memcached必须启动这个插件。双击。

 

这代表 Memcached插件已经启动成功,如果插件停止,那么所有的内存数据将会被销毁。

 

3. MemCached 用到的 jar 

 

 

4. MemCached 流程

 

 

5. MemCached 实际使用个人思路

 

MemCacheUtil 负责Cache 底层操作

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


 

 

 

 

 

 


© 著作权归作者所有

共有 人打赏支持
HelloWordToo
粉丝 0
博文 1
码字总数 1109
作品 0
昌平
加载中

评论(2)

极限Java之菜鸟
极限Java之菜鸟
感觉很不错,可能我也是初学的原因,没怎么懂,你使用过memcache做过项目吗,做过的话给发点例子看看呗
HelloWordToo
HelloWordToo
给点意见好不好哇~~~
memcached的安装和使用

在Linux下安装运行memcache cd /tmp 可去官网获取相关版本链接 wget http://cloud.github.com/downloads/libevent/libevent/libevent-2.0.20-stable.tar.gztar -zxvf libevent-2.0.20-stable......

开源中国首席观察员
2012/10/30
0
0
导入代码时eclipse的src目录变为包名

初学Java网站开发,还是个菜鸟。用SVN和队友做项目,经常碰到从SVN上下载的项目,导入代码时eclipse的src目录变为包名,总是把src当包名附在每个包最前面,一直报错,改了吧,没法使用SVN同步...

惠风康桥
2012/12/12
0
8
Java WebSocket的例子

0.前言 前段时间OSC上有篇WebSocket的每日一博,自己也上网查了点相关资料,部署了网上的几个demo学习了一 下。大概得到总结就是开始Java的WebSocket还不统一,不同服务器下都有自己一套API,...

蛙牛
2014/03/16
0
18
Ehcache和MemCached比较分析

项目 Memcache Ehcache 分布式 不完全,集群默认不实现 支持 集群 可通过客户端实现 支持(默认是异步同步) 持久化 可通过第三方应用实现,如sina研发的memcachedb,将cache的数据保存到[ur...

浮躁的码农
2015/07/24
0
0
【Linux 初学】虚拟机安装、联网、JDK安装(一)

1、虚拟机的安装: 利用centos-6.4-X8664.iso安装了两台内存512M虚拟机,centos-6.4-X8664.iso贴不上,网上下载吧。 PS:本机配置为8G内存、1T硬盘,CPU是i5-4210M,完全可以同时启动,占用电...

大白来袭
2015/07/21
0
0
memcache java 客户端与c#客户端 数据不一致问题

使用 memcache 我在.net 里使用 enyim.caching 缓存。 在java 里使用 spymemcached 读取 不到,但是控制台都可以看到。 后来了解到,每个memcache 有一个flag,不同的客户端 不同。 我修改了...

2J
05/28
0
0
Java程序员如何高效而优雅地入门Cpp?

java切入到cpp的学习,首先会具备以下几个优势点 1.没有初学编程语言的恐惧感 毕竟作为过来人切入新的编程语言的学习,驾轻就熟学习的套路上都已经很熟悉了,如果是中级的java程序员切入进来...

启示录是真的
05/27
0
0
Ubuntu下安装java、mysql和tomcat 步骤说明

本文将分别讲一下Ubuntu下java、mysql和tomcat的安装方法,或者说步骤吧,方法大家都知道的。 首先讲一下java的安装吧。 到Oracle官网下载安装包:dk-7u51-linux-i586.tar.gz(版本因人而异,...

andy521zhu
2014/03/13
0
0
Gradle学习笔记(1)创建简单的Java项目

  Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。当前其支持的语言限于Jav...

jclian91
03/29
0
0
学习hibernate感受(-)

做为一个初学Hibernate的过来人,想对将要学习Hibrnate的高手手们谈一下自己的感受! 首先我们要弄清楚,我们为什么要学习Hibernate?Hibernate是什么东东? 在这里我们要明确,我们是java程...

WYDPH
2012/10/01
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Docker Mac (三) Dockerfile 及命令

Dockerfile 最近学习docker的时候,遇到一件怪事,关于docker镜像可能会被破坏,还不知道它会有此措施 所以需要了解构建Dockerfile的正确方法 Dockerfile是由一系列命令和参数构成的脚本,这些命...

___大侠
16分钟前
0
0
NetCat Tutorials

Hacking with Netcat part 1: The Basics Hacking with Netcat part 2: Bind and reverse shells Hacking with Netcat part 3: Advanced Techniques 10 Introduction to Netcat - pdf NetCat......

zungyiu
16分钟前
0
0
Android Studio+NDK+Cmake 移植FFmpeg-4.0.2命令行工具

一、编译 参考大神的帖子,亲测一次编译成功:https://blog.csdn.net/bobcat_kay/article/details/80889398 鉴于以前查文档的经验,这里附上编写例子的时间:2018年7月22日 我用的是ubantu,...

她叫我小渝
16分钟前
0
0
mysql创建数据库

登录MYSQL mysql -u root -p 脚本创建数据库WeChat,并制定默认的字符集是utf8mb4。 CREATE DATABASE Wechat DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci; 授权 grant all......

niithub
31分钟前
0
0
svn: Unable to connect to a repository URL 的解决方案

错误图示: 解决办法:清除本地保存的授权信息; 1:右键点击本地文件夹,选择设置; TortoiseSVN -> Settings 2:在弹出的对话框中选择 Saved Data, 右侧选择:授权地方清理所有。 然后点确...

宁哥实战课堂
今天
1
0
sleep与wait的区别

Thread.sleep(XXX)方法消耗CPU吗? 这个知识点是我之前认识一直有错误的一个知识点,在我以前的认识里面,我一直认为Thread.sleep(1000)的这一秒钟的时间内,线程的休眠是一直占用着CPU的时间...

码代码的小司机
今天
1
0
20位活跃在Github上的国内技术大牛 leij 何小鹏 亚信

本文列举了20位在Github上非常活跃的国内大牛,看看其中是不是很多熟悉的面孔? 1. lifesinger(玉伯) Github主页: https://github.com/lifesinger 微博:@ 玉伯也叫射雕 玉伯(王保平),...

海博1600
今天
1
0
Mybatis收集配置

一、Mybatis取Clob数据 1、Mapper.xml配置 <resultMap type="com.test.User" id="user"> <result column="id" property="id"/> <result column="json_data" property="jsonData" ......

星痕2018
今天
1
0
centos7设置以多用户模式启动

1、旧版本linux系统修改inittab文件,在新版本执行vi /etc/inittab 会有以下提示 # inittab is no longer used when using systemd. # # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON......

haha360
今天
1
0
OSChina 周日乱弹 —— 局长:怕你不爱我

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ andonny :分享周二珂的单曲《孤独她呀》 《孤独她呀》- 周二珂 手机党少年们想听歌,请使劲儿戳(这里) @孤星闵月 :没事干,看一遍红楼梦...

小小编辑
今天
385
12

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部