热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

Ubuntu及Windows上测试Memcached服务

关于memcached服务的安装可以参见:Ubuntu及Windows上安装memcached服务http://www.linuxidc.com/Linux/2012-08/69313.htm参考:http://www.linuxidc.com/Linux/2010-11/29573.htm废话少说直接上代码:先创建一个memcached的连接类,注意填写正确的memcached服

关于memcached服务的安装可以参见:Ubuntu及Windows上安装memcached服务 http://www.linuxidc.com/Linux/2012-08/69313.htm

参考:http://www.linuxidc.com/Linux/2010-11/29573.htm

废话少说直接上代码:

先创建一个memcached的连接类,注意填写正确的memcached服务器的IP及端口

  1. import java.io.IOException;  
  2. import java.net.InetSocketAddress;  
  3. import java.util.concurrent.Future;  
  4.   
  5. import net.spy.memcached.MemcachedClient;  
  6.   
  7.   
  8. public class MemClient {  
  9.     private static MemcachedClient client = null;  
  10.   
  11.     static {  
  12.         try {  
  13.             client = new MemcachedClient(new InetSocketAddress("127.0.0.1",  
  14.                     11211));  
  15.             System.out.println("CONNECTED TO SERVER");  
  16.         } catch (IOException e) {  
  17.             e.printStackTrace();  
  18.             System.exit(-1);  
  19.         }  
  20.     }  
  21.   
  22.     public Future addToMemCache(String key, int timeOut, Object val) {  
  23.         Future future = client.set(key, timeOut, val);  
  24.         return future;  
  25.     }  
  26.   
  27.     public Object getMemcachedValue(String key) {  
  28.         return client.get(key);  
  29.     }  
  30.   
  31. }  

再创建一个使用类,基本原理就是随机生成100对键值对存入,并检查是否全部存入,在设定的expire期限以后,读取看是否存入的数据都失效了

  1. import java.util.ArrayList;  
  2. import java.util.Random;  
  3. import java.util.concurrent.ExecutionException;  
  4. import java.util.concurrent.Future;  
  5. import java.util.logging.Level;  
  6. import java.util.logging.Logger;  
  7.   
  8. public class MemClientUser {  
  9.     private static ArrayList keyStore = new ArrayList();  
  10.     private static ArrayList> futures = new ArrayList>();  
  11.   
  12.     private static int counter = 0;  
  13.   
  14.     public static void main(String[] args) throws InterruptedException,  
  15.             ExecutionException {  
  16.         Logger.getLogger("net.spy.memcached").setLevel(Level.SEVERE);  
  17.   
  18.         final MemClient memClient = new MemClient();  
  19.         for (int i = 0; i < 100; i++) {  
  20.             final String key = getRandomKey();  
  21.             final String value = getValueFromASource();  
  22.             keyStore.add(key);  
  23.   
  24.             Future future = memClient.addToMemCache(key, 10, value);  
  25.             try {  
  26.                 future.get();  
  27.             } catch (InterruptedException e) {  
  28.                 e.printStackTrace();  
  29.             } catch (ExecutionException e) {  
  30.                 e.printStackTrace();  
  31.             }  
  32.             if (future != null) {  
  33.                 futures.add(future);  
  34.                 counter++;  
  35.             } else  
  36.                 System.out.println("future is null??");  
  37.         }  
  38.   
  39.         System.out.println("VALUES TRIED: " + counter);  
  40.   
  41.         counter = 0;  
  42.   
  43.         for (final String key : keyStore) {  
  44.             String val = (String) memClient.getMemcachedValue(key);  
  45.             if (val != null)  
  46.                 counter++;  
  47.         }  
  48.         System.out.println("VALUES FOUND: " + counter);  
  49.   
  50.         // This ensures the the values are expired   
  51.         Thread.sleep(10000);  
  52.   
  53.         counter = 0;  
  54.   
  55.         for (final String key : keyStore) {  
  56.             String val = (String) memClient.getMemcachedValue(key);  
  57.             if (val != null)  
  58.                 counter++;  
  59.         }  
  60.         System.out.println("VALUES REMAINING: " + counter);  
  61.     }  
  62.   
  63.     private static String getRandomKey() {  
  64.         return "RANDOM_KEY" + new Random().nextInt(99999);  
  65.     }  
  66.   
  67.     private static String getValueFromASource() {  
  68.         // This function ideally would return a value from a database, or an API   
  69.         // call   
  70.         return "RANDOM_VALUE" + new Random().nextInt(99999);  
  71.     }  
  72.   
  73. }  

测试结果如下:


推荐阅读
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • 在Ubuntu 18.04上使用Nginx搭建RTMP流媒体服务器
    本文详细介绍了如何在Ubuntu 18.04上使用Nginx和nginx-rtmp-module模块搭建RTMP流媒体服务器,包括环境搭建、配置文件修改和推流拉流操作。适用于需要搭建流媒体服务器的技术人员。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 实现Win10与Linux服务器的SSH无密码登录
    本文介绍了如何在Windows 10环境下使用Git工具,通过配置SSH密钥对,实现与Linux服务器的无密码登录。主要步骤包括生成本地公钥、上传至服务器以及配置服务器端的信任关系。 ... [详细]
  • 本文探讨了Linux环境下线程私有数据(Thread-Specific Data, TSD)的概念及其重要性,介绍了如何通过TSD技术避免多线程间全局变量冲突的问题,并提供了具体的实现方法和示例代码。 ... [详细]
  • 本文探讨了服务器系统架构的性能评估方法,包括性能评估的目的、步骤以及如何选择合适的度量标准。文章还介绍了几种常用的基准测试程序及其应用,并详细说明了Web服务器性能评估的关键指标与测试方法。 ... [详细]
  • WebBenchmark:强大的Web API性能测试工具
    本文介绍了一款名为WebBenchmark的Web API性能测试工具,该工具不仅支持HTTP和HTTPS服务的测试,还提供了丰富的功能来帮助开发者进行高效的性能评估。 ... [详细]
  • 随着Linux操作系统的广泛使用,确保用户账户及系统安全变得尤为重要。用户密码的复杂性直接关系到系统的整体安全性。本文将详细介绍如何在CentOS服务器上自定义密码规则,以增强系统的安全性。 ... [详细]
  • Ubuntu系统下的GIF动画录制解决方案
    在撰写文章或教程时,GIF动态图能够有效地传达信息。对于Windows用户而言,ScreenToGif是一款非常实用的工具。而在Ubuntu系统中,用户同样拥有多种选择来创建GIF动画,本文将重点介绍两款录屏工具——Byzanz和Peek。 ... [详细]
  • Node.js在服务器上的多种部署策略
    本文探讨了Node.js应用程序在服务器上部署的几种有效方法,包括使用Screen、PM2以及通过宝塔面板进行简易管理。 ... [详细]
  • 本文介绍了如何在不同操作系统上安装Git,以及一些基本和高级的Git操作,包括项目初始化、文件状态检查、版本控制、分支管理、标签处理、版本回退等,并简要提及了开源许可协议的选择。 ... [详细]
  • 如何在Mozilla Firefox中调整GIF动画的循环次数
    本文介绍了如何通过调整Mozilla Firefox的高级设置来控制GIF动画的播放次数,帮助用户根据个人喜好自定义浏览体验。 ... [详细]
  • 在 Ubuntu 22.04 LTS 上部署 Jira 敏捷项目管理工具
    Jira 敏捷项目管理工具专为软件开发团队设计,旨在以高效、有序的方式管理项目、问题和任务。该工具提供了灵活且可定制的工作流程,能够根据项目需求进行调整。本文将详细介绍如何在 Ubuntu 22.04 LTS 上安装和配置 Jira。 ... [详细]
  • 从CodeIgniter中提取图像处理组件
    本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ... [详细]
  • 在《PHP应用性能优化实战指南:从理论到实践的全面解析》一文中,作者分享了一次实际的PHP应用优化经验。文章回顾了先前进行的一次优化项目,指出即使系统运行时间较长后出现的各种问题和性能瓶颈,通过采用一些通用的优化策略仍然能够有效解决。文中不仅详细阐述了优化的具体步骤和方法,还结合实例分析了优化前后的性能对比,为读者提供了宝贵的参考和借鉴。 ... [详细]
author-avatar
谢文友6123
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有