Memcache学习笔记一:Memcache在Linux下的安装和使用

linux下memcache的安装和启动 安装memcache之前要记得先安装libevent类库,可以选择直接联网下载,使用wget命令即可: Linux的系统中,有时候需要wget下载一个文件,而下载地址中的文件名却非常长,导致下载失败,提示:Cannot write to和filename too long 解决这个问题只需要把下载的文件输出为一个固定的文件名。 比如:sudo wget https://github.com 阅读详情

Memcache学习笔记一:Memcache在Linux下的安装和使用

标签(空格分隔): Memcache


一、下载Memcache源码包

二、安装Memcache 源码编译安装

  1. gcc依赖 可在线安装yum install gcc
  2. lib-event 可在线安装yum install lib-event

    含有文件:
        libevent          
        libevent-doc    
        libevent-headers
        libevent-devel
    

    手动安装:进入lib-event目录,执行: rpm -ivh libevent-*

  3. 编译安装memcache

    [root@mo memcached-1.4.31]# ./configure 
    [root@mo memcached-1.4.31]# make

    成功之后文件夹中会出现一个memcached的可执行文件

  4. 启动

    //查看memcache的启动命令
    [root@mo memcached-1.4.31]# ./memcached -help
    //启动命令:
    [root@mo memcached-1.4.31]#./memcached -p 11211 -vvv -u root

三、Memcache的API操作

连接Memecache驱动包:spymemcached-x.x.x.jar,xmemcached-x.x.x.jar, memcache-x.x.x.jar

使用较多的是xmemcached-x.x.x.jar
官网下载xmemcached-1.4.3-bin-with-dependencies.tar.gz
解压:含有用户指南和xmemcached-x.x.x.jar和依赖jar
  1. 导入jar包

    xmemcached-1.4.3.jar
    slf4j-log4j12-1.6.1.jar
    slf4j-api-1.6.1.jar
    log4j-1.2.16.jar
    
  2. API操作

    import net.rubyeye.xmemcached.*;
    import net.rubyeye.xmemcached.command.BinaryCommandFactory;
    import net.rubyeye.xmemcached.exception.MemcachedException;
    import net.rubyeye.xmemcached.utils.AddrUtil;
    import org.junit.Before;
    import org.junit.Test;
    
    import java.io.IOException;
    import java.util.Date;
    import java.util.concurrent.TimeoutException;
    
    /**
     * Created by MOTUI on 2016/10/19.
     *
     * xmemcached操作Memcache
     */
    public class TestCache {
    
        private MemcachedClient client;
    
        @Before
        public void before() throws IOException {
            //获得XMemcachedClientBuilder对象
            XMemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses("192.168.0.167:11211"));
            //添加二进制协议
            builder.setCommandFactory(new BinaryCommandFactory());
            //获得MemcachedClient
            client = builder.build();
        }
    
        /**
         * 添加
         * @throws InterruptedException
         * @throws MemcachedException
         * @throws TimeoutException
         */
        @Test
        public void testAdd() throws InterruptedException, MemcachedException, TimeoutException {
            //100秒
            boolean flag = client.add("user:1", 100, "zhangsan");
            //boolean flag = client.add("user:2", 100, "zhangsan");
            System.out.println(flag);
        }
    
        /**
         * 获取
         * @throws InterruptedException
         * @throws MemcachedException
         * @throws TimeoutException
         */
        @Test
        public void testGet() throws InterruptedException, MemcachedException, TimeoutException {
            Object object = client.get("user:1");
            //Object object = client.get("user:2");
            System.out.println(object);
        }
    
        /**
         * 保存或修改
         * @throws InterruptedException
         * @throws MemcachedException
         * @throws TimeoutException
         */
        @Test
        public void testSaveOrUpdate() throws InterruptedException, MemcachedException, TimeoutException {
            boolean flag = client.set("user:1", 1000, "wangwu");
            System.out.println(flag);
        }
    
        /**
         * 更新
         * @throws InterruptedException
         * @throws MemcachedException
         * @throws TimeoutException
         */
        @Test
        public void testUpdate() throws InterruptedException, MemcachedException, TimeoutException {
            boolean flag = client.replace("user:1", 1000, new Date());
            System.out.println(flag);
        }
    
        /**
         * 删除
         * @throws TimeoutException
         * @throws InterruptedException
         * @throws MemcachedException
         */
        @Test
        public void testDelete() throws TimeoutException, InterruptedException, MemcachedException{
            boolean flag = client.delete("user:1");
            System.out.println(flag);
        }
    
    
        /**
         * Memcached是通过cas协议实现原子更新,所谓原子更新就是compare and set
         * @throws InterruptedException
         * @throws MemcachedException
         * @throws TimeoutException
         */
        @Test
        public void testCAS() throws InterruptedException, MemcachedException, TimeoutException {
            GetsResponse<Object> response = client.gets("user:2");
            //版本号
            long version = response.getCas();
    
            System.out.println(version);
            //修改
            boolean flag = client.cas("user:2", 100, "update-user:2", version);
            System.out.println(flag);
    
        }
    
        @Test
        public void testCAS1() throws InterruptedException, MemcachedException, TimeoutException {
            boolean flag = client.cas("user:1", new CASOperation<Object>() {
                @Override
                public int getMaxTries() {
                    return 1;
                }
    
                @Override
                public Object getNewValue(long l, Object o) {
                    return "update-user:1";
                }
            });
            System.out.println(flag);
    
        }
    
        /**
         * 修改时间不修改值
         * @throws InterruptedException
         * @throws MemcachedException
         * @throws TimeoutException
         */
        @Test
        public void testTouch() throws InterruptedException, MemcachedException, TimeoutException {
            boolean flag = client.touch("user:1", 1000);
            System.out.println(flag);
        }
    
        /**
         * 需要开启二进制协议
         * @throws InterruptedException
         * @throws MemcachedException
         * @throws TimeoutException
         */
        @Test
        public void testGetAndTouch() throws InterruptedException, MemcachedException, TimeoutException {
            Object object = client.getAndTouch("user:1", 1000);
            System.out.println(object);
        }
    
        /**
         * 设置命名空间
         * @throws InterruptedException
         * @throws MemcachedException
         * @throws TimeoutException
         */
        @Test
        public void testWithNameSpace() throws InterruptedException, MemcachedException, TimeoutException {
            client.beginWithNamespace("com.motui.test");
            boolean flag = client.set("user:01", 100, "nameSpace");
            System.out.println(flag);
            Object object = client.get("user:01");
            System.out.println(object);
        }
    
        @Test
        public void testWithNameSpace01() throws InterruptedException, MemcachedException, TimeoutException {
            Object object = client.withNamespace("com.motui.test2", new MemcachedClientCallable<Object>() {
                @Override
                public Object call(MemcachedClient memcachedClient) throws MemcachedException, InterruptedException, TimeoutException {
                    client.set("user:01", 1000, "test2-nameSpace");
                    Object object = client.get("user:01");
                    return object;
                }
            });
            System.out.println(object);
        }
    
        /**
         * 清除指定命名空间的缓存
         * @throws InterruptedException
         * @throws MemcachedException
         * @throws TimeoutException
         */
        @Test
        public void testClearWithNameSpace() throws InterruptedException, MemcachedException, TimeoutException {
            client.invalidateNamespace("com.motui.test");
        }
    
        /**
         * 清除所有缓存
         * @throws InterruptedException
         * @throws MemcachedException
         * @throws TimeoutException
         */
        @Test
        public void clearAll() throws InterruptedException, MemcachedException, TimeoutException {
            client.flushAll();
        }
    
    }
    

    四、Memcache和Redis的比较和应用场景

    Memcache :分布式缓存服务 key-value  基于内存 最大缓存时长30天  key-value 最大 不得超过1M
          Memcache单节点服务器不支持集群.
          key String    value:Object
    
    Redis  :基于内存数据库 数据持久化 基于内存 key-value 缓存 key-value 最大 1GB
              Redis 支持集群 (主从/副本集+分片)
              key String   value:String/List/Set(SortedSet)/Map 
    
              SETEX(key,value,expire) 
    
    Memcache使用场景:
               1.分布式cache  <-->  数据库静默   查
               2.分布式session管理  提升应用服务器的健壮性 减轻服务器的内存压力
    

五、Memcache的分布

    Memcached的分布是通过客户端实现的,客户端根据key的哈希值得到将要存储的memcached节点,
并将对应的value存储到相应的节点。

启动另一个Memcache:

[root@mo memcached-1.4.31]# ./memcached -p 11212 -vvv -u root

对于集群的连接只需要修改连接代码即可,因为xmemcached已经帮我们做好了连接的解决方案。修改如下:

    import net.rubyeye.xmemcached.*;
    import net.rubyeye.xmemcached.command.BinaryCommandFactory;
    import net.rubyeye.xmemcached.exception.MemcachedException;
    import net.rubyeye.xmemcached.utils.AddrUtil;
    import org.junit.Before;
    import org.junit.Test;

    import java.io.IOException;
    import java.util.Date;
    import java.util.concurrent.TimeoutException;

    /**
     * Created by MOTUI on 2016/10/19.
     *
     * xmemcached操作Memcache
     */
    public class TestCache01 {

        private MemcachedClient client;

        @Before
        public void before() throws IOException {
            //获得XMemcachedClientBuilder对象
            //多个[ip]:[port]中间用空格分割
            //一旦集群搭建完成,多个[ip]:[port]的顺序不能随意改变,顺序改变会导致数据无法取到
            XMemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses("192.168.0.167:11211 192.168.0.167:11212"));
            //添加二进制协议
            builder.setCommandFactory(new BinaryCommandFactory());
            //获得MemcachedClient
            client = builder.build();
        }

        /**
         * Memcache集群测试
         * @throws TimeoutException
         * @throws InterruptedException
         * @throws MemcachedException
         */
        @Test
        public void testCluster() throws TimeoutException, InterruptedException, MemcachedException{
            for(int i=0;i<100;i++){
                //插入数据
                //client.set("key"+i, 1000, "value"+i);
                //查数据
                String key="key"+i;
                int dbNum=Math.abs(key.hashCode())%2;

                System.out.println("机器编号:"+dbNum+" > "+client.get(key));
            }
        }
    }

结果可自行测试。

注意:

多个[ip]:[port]中间用空格分割
一旦集群搭建完成,多个[ip]:[port]的顺序不能随意改变,顺序改变会导致数据无法取到

其他配置参考xmemcached官方使用文档。在官方下载的.zip包下。

memcached-1.4.jar memcached-1.4.jar memcached-1.4.jar memcached-1.4.jar 立即下载

相关推荐

xmemcached-1.2.5.jar

还在为找不到jar文件烦心吗,不用了到我空间来有你想要的,持续更新。。。 xmemcached-1.2.5.jar

MemCache 入门极简教程

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34077371的博客 379

密码学:一文看懂Base64算法

Base64常常在我们开发中出现,我们可能只知道它是一串乱码(看不懂的符号),知道有时候知道我们需要把一些数据进行base64编码,有时候需要进行Base64解码。但是却不知道它的作用是什么?它存在的意义是什么?还有它是如何生成的?如何编码和解码?上述的疑问相信在你读完本篇文章之后烟消云散。下面开始正文。Base64是什么?它和加密解密操作有什么关系吗?没错,这就是经过Base64编码后的字符串。对它解码后,我们获得以下内容点个关注,是对我持续创作的最大的鼓励!

Shujie 1万+

MemCache 基础介绍与工作原理

1、什么是MemCache 官方说明: MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的key...

weixin_33717117的博客 285

SwarmClaw:自托管多智能体AI运行时部署与实战指南

多智能体系统是人工智能领域的重要发展方向,它通过多个具备自主决策和协作能力的智能体共同完成任务,其核心原理在于分布式问题求解与协同规划。这种架构在提升任务处理效率、复杂问题分解和鲁棒性方面具有显著技术价值,广泛应用于自动化工作流、虚拟团队协作、智能客服和个性化助手等场景。本文聚焦于SwarmClaw这一自托管的多智能体AI运行时,它原生支持Model Context Protocol,并内置了超过23种AI提供商,为开发者提供了一个开箱即用且高度可定制的控制平面,便于构建和管理复杂的多智能体协作网络。

weixin_27207591的博客 401

Kali Linux渗透测试:蚁剑(AntSword)三种安装方法与避坑指南

WebShell管理是渗透测试与网络安全攻防演练中的关键技术环节,它允许安全人员在获得初步访问权限后,对目标系统进行文件管理、命令执行和数据库操作等深度控制。其核心原理是通过在Web服务器上植入特定脚本,建立一条隐蔽的远程管理通道。在实战中,一个高效、稳定的WebShell管理工具能极大提升后渗透阶段的工作效率与成功率。蚁剑(AntSword)作为一款功能强大的国产开源工具,凭借其插件化架构和图形化界面,成为众多安全研究人员的首选。本文将聚焦于如何在渗透测试专用操作系统Kali Linux上部署蚁剑,详细对

weixin_34413103的博客 413

Xmemcached学习笔记一(安装memcached)

memcached有三种java客户端   第一种:Com.danga包下面的memcached,需引入jar(本人用的是memcached-2.5.2.jar文末附上附件需要的可以下载)   第二种:spyMemcached   第三种:XMemcached 据说第三种是使用最简单,最好用的,我也只接触并使用过第三种 首先是xmemcached安装   1.memcached和...

weixin_30868855的博客 509

基于Docker的D435i相机与IMU联合标定实战指南

本文详细介绍了基于Docker的D435i相机与IMU联合标定实战指南,涵盖kalibr镜像构建、IMU标定全流程、双目相机标定技巧及联合标定结果验证。通过Docker容器化部署,简化了复杂依赖环境,提升标定效率与精度,适用于机器人视觉与SLAM应用。

weixin_30872337的博客 239

Linux下Memcache的安装和使用

Linux下Memcache的安装和使用服务端的安装客户端的安装测试简单实用 服务端的安装 安装memcached Linux系统安装memcached,首先要先安装libevent库 yum install libevent libevent-deve yum install memcached 2.启动memcached /usr/bin/memcached -p 112...

katherine的博客 612

一种高超声速飞行器弹道的仿真方法

设计并实现了一个高超声速飞行器弹道仿真算法,并应用到基于OSGEarth的态势中。

eyepeak的博客 6541

一篇讲透:豆包、元宝、DeepSeek、Kimi、WorkBuddy,职场里到底怎么分工

这篇文章深入分析了当前主流AI工具(WorkBuddy、豆包、腾讯元宝、DeepSeek、Kimi)的特点和使用场景,帮助读者根据不同工作需求选择合适的AI助手。核心观点包括: AI工具各有所长:豆包适合快速创作初稿,元宝擅长信息检索整理,DeepSeek强于逻辑分析,Kimi专精文本处理,WorkBuddy则更适合任务推进和成果交付。 使用前需明确需求:是要创意发散、信息整理,还是任务执行?不同阶段应选用不同工具组合。 提供了6个具体职场场景的解决方案,包括文章创作、课程设计、会议纪要等,并给出详细的操作

weixin_39284145的博客 1万+

Linux下的Memcache安装

 from http://www.ccvita.com/257.html Linux下的Memcache安装记录下Memcache安装的过程。 Linux下Memcache服务器端的安装服务器端主要是安装memcache服务器端,目前的最新版本是 memcached-1.3.0 。下载:http://www.danga.com/memcached/dist/memcached-1.

barrydiu的专栏 1万+

企业级OpenClaw部署实战:10个关键配置让你从“养虾“到“精通“

OpenClaw(社区昵称"小龙虾")作为2026年开源社区最活跃的AI Agent项目,凭借其多Agent协同架构和企业级安全隔离能力,已成为中大型企业的首选AI基础设施。本文基于真实企业部署经验,系统梳理了企业级OpenClaw部署的10个关键配置:用户ID消息隔离、群组ID消息隔离、多机器人配置、无限量Agent创建、机器人与Agent关联、Agent间调度、权限配置、Hooks任务、多模型切换及一键备份迁移。

program哲学 929

Memcache在Linux下安装过程

Linux下Memcache服务器端的安装 服务器端主要是安装memcache服务器端,目前的最新版本是 memcached-1.3.0 。 下载:http://www.danga.com/memcached/dist/memcached-1.2.5.tar.gz 另外,Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent,libevent的最新版本是libevent-1.3。(如果你的系统已经安装了libevent,可以不用安装) 官网:http://www.

sidneyzhangxl的博客 973

【unity实战】使用unity的Navigation+LineRenderer实现一个3D人物寻路提前指示预测移动轨迹的效果,并可以适配不同的地形

本文介绍了在Unity中使用Navigation导航系统和LineRenderer实现3D人物寻路轨迹预测效果的方法。通过NavMesh.CalculatePath计算路径点,结合Physics.Raycast进行地面点投射,将路径点赋予LineRenderer渲染出移动轨迹。关键点包括:1)利用NavMesh.CalculatePath计算两点间可行走路径;2)通过射线检测获取地面点提高路径适配性;3)使用协程定期更新路径绘制。文章还提供了完整代码实现,并说明需要将地面图层设置为Ground并进行导航网格

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 457

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

linux php memcache,【Linux】 memcache安装与基本使用教程

本篇文章将和大家讲述memcache安装与基本使用教程,是在Linux系统下哦,感兴趣的朋友可以了解一下。memcache是一套分布式的高速缓存系统,特点为key-value 存储一、在 linux 编译安装memcache、redis等,需要 gcc,make,cmake,autoconf,libtool 等工具, 直接使用yum安装即可:yum install gcc make cmake a...

weixin_28903391的博客 249

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

linux之memcache编译安装及使用

linnux之memcache编译安装及使用1、编译安装memcache安装依赖工具包下载官方源码安装libevent依赖和memcache:2、连接使用memcachetelnet连接memcache常用命令添加修改添加缓存修改缓存设置缓存读取删除清空所有缓存查看缓存服务器状态打印版本打印内存信息 memcache是一套分布式的高速缓存系统,特点为key-value 存储。 1、编译安装memc...

hanruiding的博客 463

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Linux下安装和使用Memcache

[作者]黄老邪 [网站]http://www.heiyephp.comhttp://www.itkaiyuan.com [Enail]huanglaoxiero@163.com [新浪微博]weibo.com/myphper [腾讯微博]t.qq.com/skyphp [QQ]1016356525 [生涯]2011~至今 [宣言]等待就是...

bichen8339的博客 92

Linux下安装memcache

由于在做的一个项目使用了memcache缓存,缓存服务器炸掉了,索性我就自己在服务器上安装memcache。 其实很简单,但是由于现在用redis的比较多,上网查到memcache的帖子都是五六年前的,甚至有的链接都失效了。自己搞了两个小时整理了一下。 1.下载memcache与libevent软件。 libevent官网(http://monkey.org/~provos/libevent/),...

qq1043197615的博客 377

linux重启memcache_Linux下memcache的安装和启动

memcache是高性能,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。据说官方所说,其用户包括twitter、digg、flickr等,都是些互联网大腕呀。目前用memcache解决互联网上的大用户读取是非常流行的一种用法。编译错误:libmemcached/auto.cc: In function 'memcached_return_t text_incr_decr(...

weixin_39985365的博客 245

Linux下memcache的安装

Linux下memcache的安装 memcache是高性能,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。据说官方所说,其用户包括twitter、digg、flickr等,都是些互联网大腕呀。目前用memcache解决互联网上的大用户读取是非常流行的一种用法。 ‍ 我在Linux上安装了一下memcache,这里先不说用法,先说一下安装,如下。

yumengkk的专栏 1270

linux重启memcache_Linux下memcache的安装和启动测试

memcache是一套分布式的高速缓存系统,MemCache的工作流程如下:先检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中;当分配给memcached内存空间用完之后,会使用LRU(Least Recently U...

weixin_39942474的博客 463

memcache的安装与使用

缓存这玩意,可谓好处多多,其角色相当于存储设备里面的内存一样,可以很大程度提高系统的性能,尤其在现在的高并发的互联网时代,如果一个系统没有用到缓存称不上一个合格的系统。 缓存有很多种,如memcache,ttserver,Redis,bazas等等,有的提供持久化服务,有的则是非持久化的。 今天借此机会,简单介绍一个入门级缓存(memcache)的安装及使用,希望可以起到抛砖引玉的效果,激起你

公众号:微观技术 3112

Linux下Memcache 安装和使用

Memcached是一种高性能的分布式内存对象缓存系统(memcached虽然称为“分布式”缓存服务器,但服务器端并没有“分布式”功能,其“分布式”由客户端函数库完成,成熟算法的为一致性Hash),用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。很多大型网站都使用了Memcached做缓存。MemCache依赖于libev...

weixin_30399871的博客 118
上一篇: MongoDB学习笔记三:MongoDB集群环境搭建
下一篇: Memcache学习笔记二:Memcache做Mybatis的缓存
motui
博客等级 码龄10年 84粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值