- 浏览: 303465 次
- 性别:
- 来自: 郴州
文章分类
- 全部博客 (70)
- hadoop (0)
- lucene (1)
- heritrix (1)
- webservice (0)
- css+div (0)
- java (29)
- javaweb (3)
- spring (2)
- hibernate (3)
- struts (5)
- struts2 (3)
- tomcat (1)
- map/reduce (0)
- ajax (0)
- android (3)
- oracle (3)
- 面试题 (1)
- 生活 (0)
- 开发工具 (1)
- 面试实习 (0)
- 设计模式 (3)
- 数据结构 (5)
- 论坛 (2)
- flex (3)
- PureMVC (1)
- java,jdk (1)
- sql server (1)
- 报表 (1)
- 算法 (4)
- 工作 (0)
最新评论
-
lp895876294:
第三种方式类似于工厂方法模式了
设计模式之单例模式(三种实现方式) -
xchsh12345:
如果用的是linux服务器呢
解决利用iText导出PDF报表中文乱码两种方式 -
memoryisking:
写的不错,关于Timer和TimeTask的内容网上资料挺多的 ...
Java定时调度 Timer类和TimerTask类 -
linfeng0169:
写的不错~!不过就是解释的不算好!
Calendar类add()与roll()方法的区别 -
u013606853:
好流弊的样子,LZ V5~
hibernate注解详解
缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载。缓存是解决这个问题的好办法。
Memcached是什么?
Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。
Memcached能缓存什么?
通过在内存里维护一个统一的巨大的hash表,Memcached能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。
Memcached快么?
非常快。Memcached使用了libevent(如果可以的话,在linux下使用epoll)来均衡任何数量的打开链接,使用非阻塞的网络I/O,对内部对象实现引用计数(因此,针对多样的客户端,对象可以处在多样的状态), 使用自己的页块分配器和哈希表, 因此虚拟内存不会产生碎片并且虚拟内存分配的时间复杂度可以保证为O(1).。
Danga Interactive为提升Danga Interactive的速度研发了Memcached。目前,LiveJournal.com每天已经在向一百万用户提供多达两千万次的页面访问。而这些,是由一个由web服务器和数据库服务器组成的集群完成的。Memcached几乎完全放弃了任何数据都从数据库读取的方式,同时,它还缩短了用户查看页面的速度、更好的资源分配方式,以及Memcache失效时对数据库的访问速度。
Memcached的特点
Memcached的缓存是一种分布式的,可以让不同主机上的多个用户同时访问, 因此解决了共享内存只能单机应用的局限,更不会出现使用数据库做类似事情的时候,磁盘开销和阻塞的发生。
Memcached的使用
一 、 安装Memcached及Memcached配置和状态查询 (此处将其作为系统服务安装)
要想使用Memcached做缓存首先需要安装Memcached服务,安装方法如下:
1. 下载Memcached:http://code.jellycan.com/memcached/ 现在的最新版本是1.2.6.注意下载正确的版本,windows 服务的话下载win32 binary。
2.解压之后放在硬盘的目录下,如:D:\memcached. 然后在运行中输入cmd进入命令行,进入到Memcached.exe 所在的目录,例如:D:\memcached,然后输入:Memcached –d install,即可完成安装。
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 –m 200来调整最大内存占用之后会发现没有起作用,总是默认的64MB的内存,在网上搜了一下,原因是注册表中并没有写入信息,可以这样来修改。
1. memcached –d shutdown 首先关闭memcached服务。
2.进入注册表,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server, 在其中有一个ImagePath项,值为"d:\memcached\memcached.exe" -d runservice,在后面加上-l 127.0.0.1 -m 3000 -c 2048。
3.memcached –d start 启动memcached服务,这样就将memcached的最大内存修改为了3000MB。
对Memcached缓存服务的状态查询,可以先telnet连接上服务:telnet 127.0.0.1 11211 ,然后使用 stats命令查看缓存服务的状态,会返回如下的数据:
time: 1255537291 服务器当前的unix时间戳
total_items: 54 从服务器启动以后存储的items总数量
connection_structures: 19 服务器分配的连接构造数
version: 1.2.6 memcache版本
limit_maxbytes: 67108864 分配给memcache的内存大小(字节)
cmd_get: 1645 get命令(获取)总请求次数
evictions: 0 为获取空闲内存而删除的items数(分配给memcache的空间用满后需
要删除旧的items来得到空间分配给新的items)
total_connections: 19 从服务器启动以后曾经打开过的连接数
bytes: 248723 当前服务器存储items占用的字节数
threads: 1 当前线程数
get_misses: 82 总未命中次数
pointer_size: 32 当前操作系统的指针大小(32位系统一般是32bit)
bytes_read: 490982 总读取字节数(请求字节数)
uptime: 161 服务器已经运行的秒数
curr_connections: 18 当前打开着的连接数
pid: 2816 memcache服务器的进程ID
bytes_written: 16517259 总发送字节数(结果字节数)
get_hits: 1563 总命中次数
cmd_set: 54 set命令(保存)总请求次数
curr_items: 28 服务器当前存储的items数量
二、客户端使用
下载memcached java client:[url]https://github.com/gwhalin/Memcached-Java-Client [/url] 1 解压后将java_memcached-release_2.5.3.jar jar包添加到工程的classpath中
2 利用memcached java client 一个简单的应用
Memcached是什么?
Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。
Memcached能缓存什么?
通过在内存里维护一个统一的巨大的hash表,Memcached能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。
Memcached快么?
非常快。Memcached使用了libevent(如果可以的话,在linux下使用epoll)来均衡任何数量的打开链接,使用非阻塞的网络I/O,对内部对象实现引用计数(因此,针对多样的客户端,对象可以处在多样的状态), 使用自己的页块分配器和哈希表, 因此虚拟内存不会产生碎片并且虚拟内存分配的时间复杂度可以保证为O(1).。
Danga Interactive为提升Danga Interactive的速度研发了Memcached。目前,LiveJournal.com每天已经在向一百万用户提供多达两千万次的页面访问。而这些,是由一个由web服务器和数据库服务器组成的集群完成的。Memcached几乎完全放弃了任何数据都从数据库读取的方式,同时,它还缩短了用户查看页面的速度、更好的资源分配方式,以及Memcache失效时对数据库的访问速度。
Memcached的特点
Memcached的缓存是一种分布式的,可以让不同主机上的多个用户同时访问, 因此解决了共享内存只能单机应用的局限,更不会出现使用数据库做类似事情的时候,磁盘开销和阻塞的发生。
Memcached的使用
一 、 安装Memcached及Memcached配置和状态查询 (此处将其作为系统服务安装)
要想使用Memcached做缓存首先需要安装Memcached服务,安装方法如下:
1. 下载Memcached:http://code.jellycan.com/memcached/ 现在的最新版本是1.2.6.注意下载正确的版本,windows 服务的话下载win32 binary。
2.解压之后放在硬盘的目录下,如:D:\memcached. 然后在运行中输入cmd进入命令行,进入到Memcached.exe 所在的目录,例如:D:\memcached,然后输入:Memcached –d install,即可完成安装。
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 –m 200来调整最大内存占用之后会发现没有起作用,总是默认的64MB的内存,在网上搜了一下,原因是注册表中并没有写入信息,可以这样来修改。
1. memcached –d shutdown 首先关闭memcached服务。
2.进入注册表,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server, 在其中有一个ImagePath项,值为"d:\memcached\memcached.exe" -d runservice,在后面加上-l 127.0.0.1 -m 3000 -c 2048。
3.memcached –d start 启动memcached服务,这样就将memcached的最大内存修改为了3000MB。
对Memcached缓存服务的状态查询,可以先telnet连接上服务:telnet 127.0.0.1 11211 ,然后使用 stats命令查看缓存服务的状态,会返回如下的数据:
time: 1255537291 服务器当前的unix时间戳
total_items: 54 从服务器启动以后存储的items总数量
connection_structures: 19 服务器分配的连接构造数
version: 1.2.6 memcache版本
limit_maxbytes: 67108864 分配给memcache的内存大小(字节)
cmd_get: 1645 get命令(获取)总请求次数
evictions: 0 为获取空闲内存而删除的items数(分配给memcache的空间用满后需
要删除旧的items来得到空间分配给新的items)
total_connections: 19 从服务器启动以后曾经打开过的连接数
bytes: 248723 当前服务器存储items占用的字节数
threads: 1 当前线程数
get_misses: 82 总未命中次数
pointer_size: 32 当前操作系统的指针大小(32位系统一般是32bit)
bytes_read: 490982 总读取字节数(请求字节数)
uptime: 161 服务器已经运行的秒数
curr_connections: 18 当前打开着的连接数
pid: 2816 memcache服务器的进程ID
bytes_written: 16517259 总发送字节数(结果字节数)
get_hits: 1563 总命中次数
cmd_set: 54 set命令(保存)总请求次数
curr_items: 28 服务器当前存储的items数量
二、客户端使用
下载memcached java client:[url]https://github.com/gwhalin/Memcached-Java-Client [/url] 1 解压后将java_memcached-release_2.5.3.jar jar包添加到工程的classpath中
2 利用memcached java client 一个简单的应用
/** * Copyright (c) 2008 Greg Whalin * All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the BSD license * * This library is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. * * You should have received a copy of the BSD License along with this * library. * * @author Greg Whalin <greg@meetup.com> */ package com.danga.MemCached.test; import java.util.Hashtable; import com.danga.MemCached.MemCachedClient; import com.danga.MemCached.SockIOPool; public class MemcachedTest { // store results from threads private static Hashtable<Integer,StringBuilder> threadInfo = new Hashtable<Integer,StringBuilder>(); /** * This runs through some simple tests of the MemcacheClient. * * Command line args: * args[0] = number of threads to spawn生产的线程的数目 * args[1] = number of runs per thread 每个线程操作次数 * args[2] = size of object to store * * @param args the command line arguments */ public static void main(String[] args) { //String[] serverlist = { "hengtiandesk144:11211", "hengtiandesk144:11212" }; String[] serverlist = { "localhost:11211" }; // initialize the pool for memcache servers SockIOPool pool = SockIOPool.getInstance(); pool.setServers( serverlist ); pool.setInitConn(5); pool.setMinConn(5); pool.setMaxConn(50); //Set the sleep time between runs of the pool maintenance thread. pool.setMaintSleep(30); //Sets the Nagle alg flag for the pool. pool.setNagle(false); pool.initialize(); /*int threads = Integer.parseInt(args[0]); int runs = Integer.parseInt(args[1]); int size = 1024 * Integer.parseInt(args[2]); // how many kilobytes */ int threads = Integer.parseInt("20"); int runs = Integer.parseInt("30"); int size = 1024 * Integer.parseInt("10"); // how many kilobytes // get object to store int[] obj = new int[size]; for (int i = 0; i < size; i++) { obj[i] = i; } String[] keys = new String[size]; for (int i = 0; i < size; i++) { keys[i] = "test_key" + i; } for (int i = 0; i < threads; i++) { //模仿连接服务器数目 bench b = new bench(runs, i, obj, keys); b.start(); } int i = 0; while (i < threads) { if (threadInfo.containsKey(new Integer(i))) { System.out.println(threadInfo.get( new Integer( i ) ) ); i++; } else { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } pool.shutDown(); System.exit(1); } /** * Test code per thread. */ private static class bench extends Thread { private int runs; private int threadNum; private int[] object; private String[] keys; private int size; public bench(int runs, int threadNum, int[] object, String[] keys) { this.runs = runs; this.threadNum = threadNum; this.object = object; this.keys = keys; this.size = object.length; } @SuppressWarnings("deprecation") public void run() { //单线程,多线程不安全 StringBuilder result = new StringBuilder(); // get client instance MemCachedClient mc = new MemCachedClient(); mc.setCompressEnable(false); mc.setCompressThreshold(0); // time deletes long start = System.currentTimeMillis(); for (int i = 0; i < runs; i++) { mc.delete(keys[i]); } long elapse = System.currentTimeMillis() - start; float avg = (float) elapse / runs; result.append("\nthread " + threadNum + ": runs: " + runs + " deletes of obj " + (size/1024) + "KB -- avg time per req " + avg + " ms (total: " + elapse + " ms)"); // time stores start = System.currentTimeMillis(); for (int i = 0; i < runs; i++) { //System.out.println(keys[i]+object[i]); mc.set(keys[i], object[i]); } elapse = System.currentTimeMillis() - start; avg = (float) elapse / runs; result.append("\nthread " + threadNum + ": runs: " + runs + " stores of obj " + (size/1024) + "KB -- avg time per req " + avg + " ms (total: " + elapse + " ms)"); // time gets start = System.currentTimeMillis(); for (int i = 0; i < runs; i++) { mc.get(keys[i]); } elapse = System.currentTimeMillis() - start; avg = (float) elapse / runs; result.append("\nthread " + threadNum + ": runs: " + runs + " gets of obj " + (size/1024) + "KB -- avg time per req " + avg + " ms (total: " + elapse + " ms)"); threadInfo.put(new Integer(threadNum), result); } } }
- java_memcached-release_2.5.3.jar (76.6 KB)
- 下载次数: 58
- memcached-1.2.6-win32-bin.zip (36 KB)
- 下载次数: 42
- java_memcached-release_2.5.2.zip (2.4 MB)
- 下载次数: 34
- memcached-1.2.6-win32-src.zip (257.4 KB)
- 下载次数: 32
- java_memcached-release_2.5.2.jar (76.9 KB)
- 下载次数: 28
发表评论
-
利用微软翻译API替代被停用谷歌翻译API
2012-02-13 13:37 10339众所周知,谷歌已经不支持翻译API1版本了,现在提供了A ... -
(转)Java回调实现
2011-12-08 14:38 1130Java回调实现 轮询:过10分钟就到女朋友宿舍前面去看她有 ... -
java实现排序算法之插入排序(直接插入排序、折半插入、shell排序)
2011-09-15 09:29 2481插入排序主要包括直接插入排序、shell排序和折半插入等几种排 ... -
java实现排序算法之交换排序(冒泡排序、快速排序)
2011-09-14 21:28 2591交换排序的主体操作是对数组中的数据不断进行交换操作。交换排序主 ... -
java实现排序算法之选择排序(直接选择排序、堆排序)
2011-09-14 20:44 2633常用的选择排序算法有两种:直接选择排序和堆排序。 一、直接选择 ... -
java 实现数据结构之队列
2011-09-14 15:27 12602队列是一种特殊的线性表,它只允许在表的前端(front)进行删 ... -
java 实现数据结构之线性表
2011-09-14 11:44 10668应用程序后在那个的数据大致有四种基本的逻辑结构: 集合:数 ... -
java 实现undo和redo操作链表的一种实现
2011-09-14 10:32 2135今天在iteye论坛逛,发现有这么一道笔试题目:实现一个可以增 ... -
jdbc连接mysql oracle sql server数据库的连接字符串
2011-09-13 10:41 2711jdbc连接mysql oracle sql serv ... -
java 利用label标记退出多重循环
2011-09-10 09:16 12031学过C语言的都知道,有个goto关键字,利用goto关键字可以 ... -
深入JDK源代码之定时操作Timer类和TimerTask类实现
2011-07-26 14:45 3464Timer类是一种线程设施,可以用来实现某一个时间或某 ... -
(转)Java中对象的深复制(深克隆)和浅复制(浅克隆)
2011-07-25 20:31 11941.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象 ... -
深入JDK源代码之LinkedList类
2011-07-26 09:09 1885public class LinkedList<E> ... -
Java中的transient关键字
2011-07-25 14:36 24884transient说明一个属性是临时的,不会被序列化。 下面是 ... -
深入JDK源代码之Observer接口和Observable类实现观察者模式
2011-07-25 11:46 3408一、何为观察者模式? 观察者模式(有时又被称为发布/ ... -
深入JDK源代码之ArrayList类
2011-07-22 11:19 2912public class ArrayList<E&g ... -
深入JDK源代码之Arrays类中的排序查找算法
2011-07-22 09:58 3943最近在暑假实习, ... -
java 实现数据结构之栈
2011-07-10 21:51 4639在学数据结构课程 ... -
Java定时调度 Timer类和TimerTask类
2011-07-10 15:38 23877Timer类是一种线程设施,可以用来实现某一个时间或某一段 ... -
Calendar类add()与roll()方法的区别
2011-07-06 22:45 10931JDK API中对这两个方法的说明如下: abstract ...
相关推荐
这里需要解释说明一下,很多开发者觉得Memcached是一种分布式缓存系统,但是其实Memcached服务端本身是单实例的,只是在客户端实现过程中可以根据存储的主键做分区存储,而这个区就是Memcached服务端的一个或者多个...
windows下C#.net框架中memcached客户端+服务端(64位32位)+说明文档(代码示例、配置安装详解)!里面包括服务器详细安装配置启动,也包括客户端调用代码以以及动态链接库dll文件,本人在64为windows7系统下成功...
memcached程序,安装说明,以及简单代码实例
memcached在SSH中的配置,以及memcached的服务端安装方法等。
《安装Memcached及Memcached配置.doc》 《Linux部署》 简介 memcached是一套分布式的快取系统,当初是Danga Interactive为了LiveJournal所发展的,但被许多软件(如MediaWiki)所使用。这是一套开放源代码软件,...
本篇文章主要介绍了java 使用memcached以及spring 配置memcached完整实例代码,具有一定的参考价值,有兴趣的可以了解一下
本文实例讲述了Laravel Memcached缓存驱动的配置与应用方法。分享给大家供大家参考,具体如下: Memcached缓存配置在任何php环境下我们都可以配置使用来提升WEB的性能。对于大型网站(数据多,访问量大)而言,...
本文实例讲述了Yii配置与使用memcached缓存的方法。分享给大家供大家参考,具体如下: 1. 下载memcached软件包,解压,把memcached.exe 放到随意一个地方,比如:d:/memcached/ 下。 2. 开始->运行->输入cmd,...
Dalli 是一个高性能的 Memcached 的 Ruby 客户端,支持 Memcached 1.4 ,使用新的二进制协议。 支持: JRuby 1.6 Ruby 1.9.3 Rubinius 2.0 示例代码: require 'dalli' options = { :namespace => "app...
memcached, cookbook memcached的开发库 memcached-cookbook 提供用于安装memcached实例的自定义资源... 还附带了默认的菜谱,它使用属性来配置主机上的单个memcached实例。要求平台debian/ubuntu和衍生产品RHEL和衍生
Docker Memcached 该项目提供了一个Dockerized Memcached,可使用在EC2实例上运行。快速开始要使用此项目,请执行以下操作: 为您的配置创建一个新的Github存储库(例如my-configs ) 为memcached创建一个目录(例如...
此实用工具的目的是减少你的管理任务时,部署和维护一个运行中的memcached环境。它具有以下特点: 能够远程创建,编辑和控制作为Windows服务的memcached。 使用Windows的模拟,以便可以部署从单一管理控制台多个...
Memcached Cloud Node.js示例 一个在Express框架上运行的Node.js示例,展示了如何在Heroku中使用 。 设置,获取和删除密钥,并获取存储桶的统计信息。 该应用程序当前在以下位置运行: ,并使用作为后端。 部署到...
MemcacheD 是你的朋友 - Memcached 对 WordPress 的支持=============... 这意味着您可以将单个 memcached 实例用于多个博客,而无需一个博客践踏另一个博客对象缓存,也无需创建特殊配置。 如果您想在博客之间共享对象
1.5 Nginx常用配置实例 1.5.1 虚拟主机配置实例 1.5.2 负载均衡配置实例 1.5.3 防盗链配置实例 1.5.4 日志分割配置实例 1.6 Nginx性能优化技巧 1.6.1 编译安装过程优化 1.6.2 利用TCMalloc优化Nginx...
php memcache[windows]用法实例,记得先将php_memcache.dll文件拷贝至php相应dll文件目录,配置好php.ini文件的memcache模块,运行程序前先运行memcached.exe文件。
有关API文档和示例,请参阅http://godoc.org/github.com/golang/groupcache与memcached的比较与memcached,groupcache:按键分片以选择负责该键的对等点与memcached不同,groupcache:不需要运行一组单独的服务器,...
一: MogileFS简介、安装和基本配置 包括:是什么、有什么、能干什么,以及特点和适用性; 通过源码安装、基本的...五:基于MogileFS的小应用示例 n 六:与其它技术的集成应用 包括:和Nginx的集成,和Memcached的集成
redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。问题是这个项目还很新,可能还不足够稳定...