热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

memcached的简单安装与使用

memcached的安装与使用:步骤:1.安装memcached服务端下载一个window版本的memcached,解压到硬盘:下载地址:http:pan.baidu.com

memcached的安装与使用:
步骤:
1.安装memcached服务端
下载一个window版本的memcached,解压到硬盘:
下载地址:http://pan.baidu.com/s/1skKhljZ
这里写图片描述
进入到安装目录下执行:
> memcached.exe -d install 安装memcached成为服务
>memcached.exe -l 127.0.0.1 -m 32 -d start,监听本机端口运行,分配32M内存

安装服务后,也可以通过手动启动memcache服务,都是可以的。

这里写图片描述

测试缓存服务器是否可用:
>telnet 127.0.0.1 11211,
memcached端口如果没有设置,默认为11211
常用参数介绍
在安装时可设置如下参数:
-p 设置端口号(默认为11211)
-l 绑定地址(默认:所有网络都允许,设置为127.0.0.1就只能本机访问)
-d start 启动memcached服务
-d restart 重新启动memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-c 最大同时连接数,默认是1024
-m 允许最大内存用量,单位M
比如:>memcached -d install -l 127.0.0.1 -m 512 -c 512 表示安装memcached服务,并监听本机端口运行,最多内存使用量512M,最多连接数512个
2.下载客户端
我下载的版本是java_memcached-release_2.0.1.jar
下载地址:http://pan.baidu.com/s/1kV6w3p9
3.使用

新建java工程,引入java_memcached-release_2.0.1.jar包,还需要引入log4j的jar包
这里写图片描述
代码:

import java.util.Date;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
public class MemcachedUtil {
    private static MemCachedClient mc = new MemCachedClient();
    static {
        // 获取连接池的实例
        SockIOPool pool = SockIOPool.getInstance();
        // 服务器列表及其权重
        String[] servers = { "127.0.0.1:11211" };
        Integer[] weights = { 3 };
        // 设置服务器信息
        pool.setServers(servers);
        pool.setWeights(weights);
        // 设置初始连接数、最小连接数、最大连接数、最大处理时间
        pool.setInitConn(10);
        pool.setMinConn(10);
        pool.setMaxConn(1000);
        pool.setMaxIdle(1000 * 60 * 60);
        // 设置连接池守护线程的睡眠时间
        pool.setMaintSleep(60);
        // 设置TCP参数,连接超时
        pool.setNagle(false);
        pool.setSocketTO(60);
        pool.setSocketConnectTO(0);
        // 初始化并启动连接池
        pool.initialize();

        // 压缩设置,超过指定大小的都压缩
        // cachedClient.setCompressEnable(true);
        // cachedClient.setCompressThreshold(1024*1024);

        mc.setPrimitiveAsString(true);// 设置序列化

    }
    /** * 私有化构造函数 */
    private MemcachedUtil() {
    }

    /*** * 功能描述:新增一个缓存数据,如果key存在不会新增 * @param 缓存的key * @param 缓存的值 * @return 操作结果 */
    public static boolean add(String key, Object value) {
        return mc.add(key, value);
    }

    /** * 功能描述:新增一个缓存数据,设置过期时间 * @param 缓存的key * @param 缓存的值 * @param 缓存时间,过期时间 New Date(1000*10):十秒后过期 * @return 操作结果 */
    public static boolean add(String key, Object value, Date expire) {
        return mc.add(key, value, expire);
    }

    /** * 功能描述:新增一个缓存数据,如果存在key,则更新该key的值 * @param 缓存的key * @param 缓存的值 * @return 操作结果 */
    public static boolean set(String key, Object value) {
        return mc.set(key, value);
    }

    /** * 功能描述:新增一个缓存数据,如果存在key,则更新该key的值 * @param 缓存的key * @param 缓存的值 * @param 缓存时间,过期时间 New Date(1000*10):十秒后过期 * @return 操作结果 */
    public static boolean set(String key, Object value, Date expire) {
        return mc.set(key, value, expire);
    }

    /** * 功能描述:替换一个缓存数据,如果存在key则替换,否则返回false * @param key * @param value * @return 操作结果 */
    public static boolean replace(String key, Object value) {
        return mc.replace(key, value);
    }

    /** * 功能描述:替换一个缓存数据,如果存在key则替换,否则返回false * @param key * @param value * @param 缓存时间 * @return 操作结果 */
    public static boolean replace(String key, Object value, Date expire) {
        return mc.replace(key, value, expire);
    }

    /** * 功能描述:根据key得到一个缓存数据 * @param key * @return 操作结果 */
    public static Object get(String key) {
        return mc.get(key);
    }

    /** * 功能描述:刷新全部缓存(就是将所有缓存设置为过期,以后放入的会覆盖掉这些过期的缓存数据) * * @return 操作结果 */
    public static boolean flushAll() {
        return mc.flushAll();
    }

    /*** * 功能描述:根据key删除一个缓存数据 * @return 操作结果 */
    public static boolean delete(String key){
        return mc.delete(key);
    }


}
import java.util.Date;
public class TestMemcached {
   public static void main(String[] args) throws InterruptedException {
      /*测试存数据set方法,并测试过期*/
      MemcachedUtil.set("test1", "test1_value",new Date(10000));
      System.out.println("有效期内取数据:"+MemcachedUtil.get("test1"));
      //线程休息11秒后,去取数据,此时已经过期
      Thread.sleep(11000);
      System.out.println("过期后取数据:"+MemcachedUtil.get("test1"));

      /*测试删除数据*/
      MemcachedUtil.set("test2", "test2_value");
      System.out.println("取key为test2的数据:"+MemcachedUtil.get("test2"));
      boolean isDelete=MemcachedUtil.delete("test2");
      System.out.println("是否删除成功:"+isDelete+",取取key为test2的数据"+MemcachedUtil.get("test2"));


      /*测试add是否会覆盖*/ 
      MemcachedUtil.add("test3", "test3_value");
      System.out.println("取key为test3的数据:"+MemcachedUtil.get("test3"));
      boolean isAdd= MemcachedUtil.add("test3", "test3_value_copy");
      System.out.println("是否更新成功:"+isAdd+",取取key为test3的数据"+MemcachedUtil.get("test3"));

      /*测试add是否会覆盖*/ 
      MemcachedUtil.set("test4", "test4_value");
      System.out.println("取key为test4的数据:"+MemcachedUtil.get("test4"));
      boolean isSet= MemcachedUtil.set("test4", "test4_value_copy");
      System.out.println("是否更新成功:"+isSet+",取取key为test4的数据"+MemcachedUtil.get("test4"));

}
} 

实验结果:
这里写图片描述


推荐阅读
  • 基于内存和 Redis 的两级 Java 缓存框架!
    👇👇关注后回复“进群”,拉你进程序员交流群👇👇Java两级缓存框架,可以让应用支持两级缓 ... [详细]
  • 一,织梦后台后台设置进入系统后台,在[系统基本参数]下面的性能选项卡当中,关于memcache进行如下配置:cfg_memcache_enable:是否启用memcache缓存,如果为否(N) ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • 本文整理了Java中com.evernote.android.job.JobRequest.getTransientExtras()方法的一些代码示例,展示了 ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • http:simple-is-better.comnews1047Firefly是免费、开源、稳定、快速扩展、能“热更新”的分布式游戏服务器端框架,采用Python编 ... [详细]
  • yii框架目录结构详细分析说明
    php教程|php手册yii,目录结构php教程-php手册yii框架目录结构详细分析说明猫狗大战源码,华为云电脑ubuntu,梦见放走很多爬虫,parttmpphp,seo页面描 ... [详细]
  • 开发笔记:超全的《 Django 入门教程 》上线了,居然还免费!
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了超全的《Django入门教程》上线了,居然还免费!相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
  • 本文介绍了在Android开发中使用软引用和弱引用的应用。如果一个对象只具有软引用,那么只有在内存不够的情况下才会被回收,可以用来实现内存敏感的高速缓存;而如果一个对象只具有弱引用,不管内存是否足够,都会被垃圾回收器回收。软引用和弱引用还可以与引用队列联合使用,当被引用的对象被回收时,会将引用加入到关联的引用队列中。软引用和弱引用的根本区别在于生命周期的长短,弱引用的对象可能随时被回收,而软引用的对象只有在内存不够时才会被回收。 ... [详细]
  • 解决Sharepoint 2013运行状况分析出现的“一个或多个服务器未响应”问题的方法
    本文介绍了解决Sharepoint 2013运行状况分析中出现的“一个或多个服务器未响应”问题的方法。对于有高要求的客户来说,系统检测问题的存在是不可接受的。文章详细描述了解决该问题的步骤,包括删除服务器、处理分布式缓存留下的记录以及使用代码等方法。同时还提供了相关关键词和错误提示信息,以帮助读者更好地理解和解决该问题。 ... [详细]
author-avatar
艺静不循环_545_191
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有