Memcached 笔记

1. Memchae是什么

Memcache 是 danga.com 的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。

它可以应对任意多个连接,使用非阻塞的网络 IO 。由于它的工作机制是在内存中开辟一块空间,然后建立一个 HashTable , Memcached 自管理这些 HashTable 。

   

为什么会有 Memcache 和 memcached 两种名称?

其实 Memcache 是这个项目的名称,而 memcached 是它服务器端的主程序文件名,

Memcache 官方网站: http://www.danga.com/memcached ,

2.Memcached的工作原理

首先 memcached 是以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,客户端可以由各种语言编写,目前已知的客户端 API 包括 Perl/PHP/Python/Ruby/Java/C#/C 等等。客户端在与 memcached 服务建立连接之后,接下来的事情就是存取对象了,每个被存取的对象都有一个唯一的标识符 key ,存取操作均通过这个 key 进行,保存到 memcached 中的对象实际上是放置内存中的,并不是保存在 cache 文件中的,这也是为什么 memcached 能够如此高效快速的原因。注意,这些对象并不是持久的,服务停止之后,里边的数据就会丢失。

 

与许多 cache 工具类似, Memcached 的原理并不复杂。它采用了 C/S 的模式,在 server 端启动服务进程,在启动时可以指定监听的 ip ,自己的端口号,所使用的内存大小等几个关键参数。一旦启动,服务就一直处于可用状态。 Memcached 的目前版本是通过 C 实现,采用了单进程,单线程,异步 I/O ,基于事件 (event_based) 的服务方式 . 使用 libevent 作为事件通知实现。多个 Server 可以协同工作,但这些 Server 之间是没有任何通讯联系的,每个 Server 只是对自己的数据进行管理。 Client 端通过指定 Server 端的 ip 地址 ( 通过域名应该也可以 ) 。需要缓存的对象或数据是以 key->value 对的形式保存在 Server 端。 key 的值通过 hash 进行转换,根据 hash 值把 value 传递到对应的具体的某个 Server 上。当需要获取对象数据时,也根据 key 进行。首先对 key 进行 hash ,通过获得的值可以确定它被保存在了哪台 Server 上,然后再向该 Server 发出请求。 Client 端只需要知道保存 hash(key) 的值在哪台服务器上就可以了。

 

        其实说到底, memcache 的工作就是在专门的机器的内存里维护一张巨大的 hash 表,来存储经常被读写的一些数组与文件,从而极大的提高网站的运行效率。

3. Memcached的特点
       Memcached的缓存是一种分布式的,可以让不同主机上的多个用户同时访问, 因此解决了共享内存只能单机应用的局限,更不会出现使用数据库做类似事情的时候,磁盘开销和阻塞的发生。


4.Memcached的使用

一 、windows下Memcached服务器端的安装 (此处将其作为系统服务安装)
     下载文件:memcached 1.2.1 for Win32 binaries (Dec 23, 2006)

                 地址:http://jehiah.cz/projects/memcached-win32/
   1 解压缩文件到c:\memcached
   2 命令行输入 'c:\memcached\memcached.exe -d install'
   3 命令行输入 'c:\memcached\memcached.exe -d start' ,该命令启动 Memcached ,默认监听端口为 11211

通过 memcached.exe -h 可以查看其帮助

        对应命令参数说明:

 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 java client:http://github.com/gwhalin/Memcached-Java-Client/downloads
   1 解压后将java_memcached-release_2.5.1.jar包添加到工程的classpath中

三、测试用例  

 

package com.leayo;

import java.util.Date;

import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;

@SuppressWarnings("deprecation")
public class Test {

	protected static MemCachedClient mcc = new MemCachedClient();

	static {
		String[] servers = { "127.0.0.1:11211" };

		Integer[] weights = { 3 };

		// 创建一个实例对象SockIOPool
		SockIOPool pool = SockIOPool.getInstance();

		// set the servers and the weights
		// 设置Memcached Server
		pool.setServers(servers);
		pool.setWeights(weights);

		// set some basic pool settings
		// 5 initial, 5 min, and 250 max conns
		// and set the max idle time for a conn
		// to 6 hours
		pool.setInitConn(5);
		pool.setMinConn(5);
		pool.setMaxConn(250);
		pool.setMaxIdle(1000 * 60 * 60 * 6);

		// set the sleep for the maint thread
		// it will wake up every x seconds and
		// maintain the pool size
		pool.setMaintSleep(30);

		// Tcp的规则就是在发送一个包之前,本地机器会等待远程主机
		// 对上一次发送的包的确认信息到来;这个方法就可以关闭套接字的缓存,
		// 以至这个包准备好了就发;
		pool.setNagle(false);
		// 连接建立后对超时的控制
		pool.setSocketTO(3000);
		// 连接建立时对超时的控制
		pool.setSocketConnectTO(0);

		// initialize the connection pool
		// 初始化一些值并与MemcachedServer段建立连接
		pool.initialize();

		// lets set some compression on for the client
		// compress anything larger than 64k
		mcc.setCompressEnable(true);
		mcc.setCompressThreshold(64 * 1024);
	}

	public static void bulidCache() {
		// set(key,value,Date) ,Date是一个过期时间,如果想让这个过期时间生效的话,这里传递的new Date(long
		// date) 中参数date,需要是个大于或等于1000的值。
		// 因为java client的实现源码里是这样实现的 expiry.getTime() / 1000 ,也就是说,如果
		// 小于1000的值,除以1000以后都是0,即永不过期
		mcc.set("test", "This is a test String", new Date(10000));
		// 十秒后过期

	}

	public static void output() {
		// 从cache里取值
		String value = (String) mcc.get("test");
		System.out.println(value);
	}

	public static void main(String[] args) {
		bulidCache(); //第一次运行后,注释掉该行,在设定10秒内仍可取到值,过期后值为null
		output();
	}

}
 

 

本地部署 OpenClaw:让 AI 真正“干活”的开源智能体,从核心概念到实战全流程 在大模型遍地开花的今天,我们早已习惯与 AI 聊天,但真正能**接管本地任务、自动化工作流**的“数字员工”却寥寥无几。OpenClaw 正是这样一款开源利器——它不仅是可本地运行的 AI 私人助理,更像一个“AI 操作系统内核”,能读写文件、执行终端命令、控制浏览器,所有数据本地存储,兼顾隐私与效率。而 Skills 作为它的标准化插件系统,更是让这份能力无限扩展。 本文将从核心概念拆解入手,再分系统给出**保姆级本地部署步骤**,包含环境准备、安装配置、技能安装与验证,甚至覆盖新手最易踩的坑,让你一次 阅读详情

相关推荐

【gridsample】地平线征程6芯片中gridsample算子的优化与部署实践

本文详细介绍了地平线征程6芯片中gridsample算子的优化与部署实践,重点探讨了PTQ和QAT量化方案在BEV感知任务中的应用。通过双线性插值优化、内存布局调整和混合精度配置等关键技术,显著提升了算子在自动驾驶场景下的性能和精度,为开发者提供了实用的部署指南和调优建议。

zero1的博客 1021

Memchae

memcached应用服务器CC#C++ 1. Memchae是什么 Memcache 是 danga.com 的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。 它可以应对任意多个连接,使用非阻塞的网络 IO 。由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTable , Memcache

zhangshaoke的专栏 1895

5G-A无源物联网:深度解析“不插电“智能的底层技术原理

北京移动推出5G-A无源物联网技术,实现电动车标签"零功耗"运行。该技术通过射频能量收集(利用5G-A基站高功率信号转换为电能)和反向散射通信(调制反射信号传输数据)两大核心技术,使设备无需电池即可工作。5G-A相比4G在信号能量密度、通信速率和定位精度等方面显著提升,结合通感一体等创新技术,为无源物联网提供商用基础。该方案已在北京小区试点应用,实现电动车精准定位管理,标签寿命可达5年以上。专家预测,这项技术将大幅降低物联网部署成本,推动"万物智联"时代的到来。

通信行业老兵、物联网从业者,做一个有趣的普通人。 2015

memchached服务的搭建 ---java 接口调用memchached

1:安装 1)手动安装 2)在线安装 2配置介绍 [root@fei ~]# more /etc/sysconfig/memcached PORT=”11211” 端口 USER=”memcached” 用户 MAXCONN=”1024” 最大连接数 CACHESIZE=”64” 缓存空间 OPTIONS=”” ...

weixin_33962621的博客 192

PC 端微信页面拆分及 JavaFx 使用

一、前言 对于一个知识点的学习过程来说,往往使用自己熟悉的工具或方式才更易于上手。因为所有同类型的知识点在抛出复杂的流程拨云见日后,所能得到的几乎都是同样的设计思想和实现理论。 在 Java 语言桌面版开发中,直至目前共提供了三套 UI 开发方式;Awt、Swing、JavaFx,以及一些扩展组件 SWT 等。在这三套 UI 组件中,JavaFx 是最新也是最为好用的,因为他提供了丰富的功能,以及...

bugstack虫洞栈 3615

python实现纵横向拉开档次法 (附完整源码)

python实现纵横向拉开档次法 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 784

memcached笔记及一些问题

很久没写博客,都在用为知笔记。。 先不排版了,记几个问题吧 setNoReply方法:为部分协议添加noreply选项,memcached 1.2.5引入了noreply支持,部分文本协议(如存储,删除,incr/decr等)允许附加设置一个noreply,表示客户端不要求memcached应答。这一特性利于批量处理。 查看memcached当前状态 代码查看 Map&...

weixin_30834019的博客 225

claude-hub:GitHub上的AI开发助手,让Claude自动帮你写代码、审代码、合代码

代码不再是人写的,而是人引导 AI 写的。在这个时代,GitHub 不再只是一个代码托管平台,而是 AI 开发代理的工作台。每一个 issue、每一条 PR,都可能是一次与 AI 合作的机会。未来属于那些敢于把开发流程交给 AI 来优化的人——他们不是在取代自己,而是在放大自己的影响力。📌关注本系列文章,我们将持续输出关于 AI 编程、GitHub 自动化、AI Agent 产品化的深度分析。

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 1373

Memcached笔记

Memcached笔记介绍特征源代码安装启动memcached(1)作为前台程序启动(2)作为后台服务程序启动set & getset命令get命令 本篇文章为菜鸟教程——Memcached教程笔记及自己实际操作记录下的内容。 介绍 (1)Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。 (2)Memcached是一种基于内存的key-value存储,用来存储小块的任意...

Zhuang_ET的博客 277

【Flink】Flink提交任务到Yarn报错Unable to close file because the last blockBP enough number of replicas

当使用 HDFS 存储文件时,每个数据块会有多个副本分布在不同的节点上,以确保数据的可靠性和容错性。然而,由于某种原因,最后一个数据块 blk_1101776325_28036289 的副本数量不足,导致无法成功关闭文件。如果确定副本数量正确,并且问题仍然存在,可以尝试手动修复副本不足的情况。异常消息表明在关闭文件时出现问题,我的原因是hadoop上有个节点有问题,导致提交到那个节点的时候,无法传递包到相关的机器上。检查 HDFS 集群的状态,确保所有节点都正常工作,没有节点宕机或网络故障等问题。

九师兄 935

【雕爷学编程】MicroPython手册之 Teensy 4.1 实时时钟 (RTC)

在类的初始化函数中,定义了用于控制I2C总线的i2c对象和RTC模块的I2C地址。接着,使用该引脚初始化了一个Pin对象。它还提供了8个串口,3个SPI端口,3个I2C端口,2个I2S/TDM数字音频端口,3个CAN总线(其中一个支持CAN FD),以及一个SDIO(4位数据)原生SD卡端口12。2、内存:Teensy 4.1配备了1024 KB的RAM(其中512 KB是紧密耦合的),8 MB的Flash(其中64 KB用于恢复和EEPROM模拟),以及两个位置可以选择添加更多的QSPI内存芯片。

雕爷学编程 576

memcached笔记

memcached是什么? memcached is a high-performance, distributed memory object caching system, generic in nature, but originally intended for use in speeding up dynamic web applications by alleviatin

世上无难事,只怕有心人 634

PY32F406K1CU6 FLASH模拟EEPROM

摘要:本文介绍了基于STM32 FLASH模拟EEPROM的实现方法。头文件flash.h定义了FLASH页大小(256字节)、用户存储区域(4页)及地址范围,提供了等待周期配置和地址校验宏,声明了EEPROM初始化、读写操作等函数接口。源文件flash.c实现了具体功能:配置FLASH等待周期(144MHz需3WS)、页读写擦除操作,以及EEPROM初始化(解锁-擦除-验证-锁定)和缓冲区读写功能。其中写操作采用"读页→更新→擦除→编程"的流程,确保数据安全写入。该方案适用于需要非易失

sam的博客 195

memcached 笔记

Memcached -m 64 -p 11211 -u nobody -d  -u 切换用户的身份 -p 指定端口 -m 表示memcached最大使用的内存 -c 这个进程允许多少个人来连接 -f  增长银子 -vvv 表示开启调试模式 &表示程序在后台运行 -s -a -l -d restart/start/stop/shutdown -d install   添加

webmazha的博客 431

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Memcached学习笔记

1、memcached原理memcached是一种缓存技术,可以将数据放入内存,主要目的是提速。memcached服务维护了一张内存表(hashtable) key value,存放更新频繁且丢了也无所谓的数据memcached 的key一般是字符串,不能重复 ;value可以放入(字符串、数值、数组、对象、布尔、二进制数据【图片/视频,用的比较少】,null)2、memcached命令安装mem...

weixin_39707247的博客 274

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Memcached的笔记

对于高并发高访问的Web应用程序来说,数据库存取瓶颈一直是个令人头疼的问题。特别当你的程序架构还是建立在单数据库模式,而一个数据池连接数峰值已经达到500的时候,那你的程序运行离崩溃的边缘也不远了。很多小网站的开发人员一开始都将注意力放在了产品需求设计上,缺忽视了程序整体性能,可扩展性等方面的考虑,结果眼看着访问量一天天网上爬,可突然发现有一天网站因为访问量过大而崩溃了,到时候哭都来不及。所以我们...

nhl_z_heng的博客 223

Memcached笔记——(三)Memcached使用总结

使用iBatis整合了Memcached,iBatis针对每台server生成了唯一标识,导致同一份数据sql会产生不同的key,造成重复缓存。——通过重写iBatis部分原码,终止了唯一标识的生成,同一个SQL产生同一个Key,同时对生成key做hash,控制长度,使得数据统一在M...

choulv4873的博客 169

memcached读书笔记一

      虽然之前项目中一直使用memcached缓存,但还没有深入了解一下,最近看了idv2的memcached全面剖析系列文章,在此总结一下,算是读书笔记吧~   参考链接:http://tech.idv2.com/2008/07/10/memcached-001/                  http://tech.idv2.com/2008/07/11/memcache...

四维空间 204

【读书笔记】 memcached

2011-06-21  memcached  已经大概看完几天了   记录下所做的笔记 1: 明白了memcached 的线程模型2: 看了源码里面set 命令执行的流程,基本了解了它的存储机制 (slabs , hash ) ,存储这一块没有太详细的看, 如果以后项目中用到, 在仔细看也不错。 3: 分布式 , 这个应该是在客户端做的。  这里面基本没有涉及。

aobai219的专栏 630

memcached学习笔记

emcache与memcached Memcache是项目名,memcached是服务名。让很多初接触的人感觉很是莫名其妙。个人认为正确的应该是用前者用更为正确一点。 Memcached下载地址:http://code.google.com/p/memcached/dow...

chuchen7021的博客 162

memcached 学习笔记

memcachedMemcached 是一套高性能的、分布式内存对象缓存系统。 注意,memcache不是数据库。1 memcached1.1 特点a.协议简单 使用文本协议和二进制协议,协议简单,性能高效.b.基于 libevent 的事件处理 libevent 是个程序库,它将 Linux 的 epoll、BSD 类操作系统的 kqueue 等事件处理功能封装成统一的接口

1160

Memcached 笔记

1. Memchae是什么 Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。 它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached自管理这些HashTable。 为什么会有Memcache和m

冷月宫主的专栏 643
上一篇: 在windows上装oracle11g R2 小麻烦
下一篇: 在本地计算机无法启动MYSQL服务,错误1067:进程意外中止
java_cto
博客等级 码龄18年 5粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值