文档章节

Memcache 初探

Candy_Desire
 Candy_Desire
发布于 2014/11/05 12:09
字数 1520
阅读 288
收藏 1

memcache 是一种分布式缓存服务器,和通常使用的非分布式的ecache不同,memcache需要独立的服务器支撑,客户端通过配置IP地址和端口号(默认11211)与之连接并使用API进行数据的缓存操作。所以自然的memcache分成两个角色:服务器端和客户端。服务器端是独立的memcache服务器,可以去官方网站下载相应的windows或者linux的包,安装的自己的机器上,目前貌似官网不再提供现成的exe文件,而是提供了一个resource文件,需要自己下载后编译打包部署。不过通过google还是可以找到exe的安装文件。

可以通过下面的链接下载http://download.csdn.net/source/2596274

下面这个是java的jar包,带源文件,可以查看API的内部实现

http://download.csdn.net/source/2596278

安装步骤:

windows 环境

1、下载上面的安装文件,解压到某个目录,比如 d:/cacheServer/memcache/ 下面

2、命令行进入上面的目录,敲命令:

memcached.exe -d install

这样将memcache安装成一个服务

3、继续敲命令:

memcached.exe -d start

这样memcache的服务将在每次开机的时候自动启动,打开任务管理器,你会发现一个进程 memcached.exe

// memcache是这个项目的名字,而memcached是这个工程的名字,多了个d,意思是daemon

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 显示帮助

memcache的使用将超乎想象的简单,将服务器启动起来,在客户端配置好相关的服务器端IP地址,可以通过MemCachedClient提供的简练的API进行缓存的操作。

1、memcache可否采用集群式部署?客户端可否配置多个服务器地址?

memcache是支持集群部署的,如果应用系统对于缓存服务器的要求是多台的,那么可以使用多台memcache服务器进行集群部署。而客户端可以通过配置SockIOPool的servers参数保存服务器地址列表,同时通过weight参数配置每台服务器的权重。SockIOPool提供了连接池的服务,可以通过SockIOPool来配置memcahce服务器相关信息,如最大连接数,最小连接数等。

2、在集群部署下,客户端如何定位某台服务器?客户端存入的一个(key,value),是否在每台服务器都有一个拷贝?

这两个其实可以归纳为一个问题,就是memcahce的hash算法问题,通过这个算法得到的数字,可以帮助客户端定位到某一台服务器,而算法的输入,就是客户端定义的缓存值key的hashCode。

上面我们讲到每台服务器将配置一个权重,那么这个权重是什么作用呢?

比如现在有两台服务器: 192.168.7.75:11211 192.168.7.74:11211 (IP仅用于举例,或许不符合相关标准)

我们配置权重分别为:

192.168.7.75:11211 4

192.168.7.74:11211 3

那么链接池初始化后,得到的一个参数为this.buckets = new ArrayList();

保存的列表为:

{

192.168.7.75:11211

192.168.7.75:11211

192.168.7.75:11211

192.168.7.75:11211

192.168.7.74:11211

192.168.7.74:11211

192.168.7.74:11211

}

可以知道上面的权重是什么意思了吧,其实可以理解为最终列表中的占有的数量。 那么,使用连接池getSock操作的时候,他会根据传入的key值,做一个hashcode的散列操作, key % buckets.size() 得到一个在buckets.size()范围内的数字,通过这个数字,从上述的buckets 列表中获取到一个IP地址,从而定位一台服务器。

所以说,一个key只能存放在一台memcache服务器上,是不会在多个服务器上有多份拷贝的,这样的话既可以防止出现刷新不同步的情况,也可以避免磁盘空间的浪费,毕竟能使用缓存策略的,一般都是访问量比较高的系统,数据量都不会少。

3、当数据修改,memcache怎么更新缓存中的数据?

memcacheClient提供了一个replace操作,可以替换特定key的值。

看了一些网络专家针对于memcahce直接和数据库映射,将应用程序和DB进行隔离的方案,所有的操作都直接与memcache进行交互,然后通过memcache的定时线程来实现与数据库的交互工作,这样的做法固然有他的优点,那就是可以很大幅度的提升系统性能,降低DB的瓶颈,但是目前想不通的是,这样的架构下,如何去解决数据同步的实时性问题,比如当定时线程开始与数据库同步数据的时候,其他的正在进行的事务操作如何错开时间差?这个通过一个时间戳的方法吗?或许可以,但是一旦这个时候memcahce宕机,尚未同步的数据会全部丢失,这个时候是无法恢复的。所以一直觉得这样的架构还是会有很大的风险。后续将会尝试搭建自己的memcache应用,提供一种可配置的统一memcache服务端,对于客户端而言不需要过多的关注缓存的问题,或许是一个很好的局面,同时,可以使用自己封装的jdbcTemplate来完成DB的操作,也是很惬意的事情。

本文转载自:http://blog.csdn.net/quzishen/article/details/5788274

共有 人打赏支持
Candy_Desire
粉丝 31
博文 71
码字总数 84592
作品 0
浦东
产品经理
python memcached 初探(一)

环境:ubuntun 语言:python IDE:pycharm 安装memcached: sudo apt-get install memcached 检测安装是否成功: 输入memcached 默认就启动了,什么也不提示,如果没成功有错误提示 安装 pyth...

山下狮子
2014/05/20
0
0
WinForms UI控件初探:Grid Control 、Data Grid、TreeList

Grid Control 、Data Grid、Spreadsheet、Data Editor、TreeList: 超乎你想象!WinForms Grid Control处理100万行数据到底有多快? WinForms界面控件初探:处理速度飞快的WinForms Data Gri...

百mumu
2016/07/13
17
0
【HTML5初探之本地存储】如果没有数据库。。。

导航 【初探HTML5之使用新标签布局】用html5布局我的博客页! 【HTML5初探之form标签】解放表单验证、增加文件上传、集成拖放 【HTML5初探之绘制图像(上)】看我canvas元素引领下一代web页面...

范大脚脚
2017/12/07
0
0
干货来了!2016年DevExpress资源汇总(更新、文档)

在2016年,著名软件界面解决方案专家DevExpress进行了重大升级,EVGET围绕版本升级推出了一系列干货资源,现将2016年所有Dev资源使用教程汇总于此,欢迎收藏转发点赞哦~ DevExpress WPF入门指...

Miss_Hello_World
2016/11/25
36
0
【HTML5初探之Geolocation API】让我们获取女神的地址

导航 【初探HTML5之使用新标签布局】用html5布局我的博客页! 【HTML5初探之form标签】解放表单验证、增加文件上传、集成拖放 【HTML5初探之绘制图像(上)】看我canvas元素引领下一代web页面...

范大脚脚
2017/12/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSX | SafariBookmarksSyncAgent意外退出解决方法

1. 启动系统, 按住⌘-R不松手2. 在实用工具(Utilities)下打开终端,输入csrutil disable, 然后回车; 你就看到提示系统完整性保护(SIP: System Integrity Protection)已禁用3. 输入reboot回车...

云迹
16分钟前
0
0
面向对象类之间的关系

面向对象类之间的关系:is-a、has-a、use-a is-a关系也叫继承或泛化,比如大雁和鸟类之间的关系就是继承。 has-a关系称为关联关系,例如企鹅在气候寒冷的地方生活,“企鹅”和“气候”就是关...

gackey
今天
1
0
读书(附电子书)|小狗钱钱之白色的拉布拉多

关注公众号,在公众号中回复“小狗钱钱”可免费获得电子书。 一、背景 之前写了一篇文章 《小狗钱钱》 理财小白应该读的一本书,那时候我才看那本书,现在看了一大半了,发现这本书确实不错,...

tiankonguse
今天
1
0
Permissions 0777 for ‘***’ are too open

异常显示: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ......

李玉长
今天
3
0
区块链10年了,还未落地,它失败了吗?

导读 几乎每个人,甚至是对通证持怀疑态度的人,都对区块链的技术有积极的看法,因为它有可能改变世界。然而,区块链技术问世已经10年了,我们仍然没有真正的用上区块链技术。 几乎每个人,甚...

问题终结者
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部