enyim.com Memcached Client:memcached实例

在上一篇文章,我们讲了,为什么要使用memched做为缓存服务器(没看的同学请点这里)。下面让我们以memcached-1.2.1-win32版本的服务组件(安装后是以一个windows服务做daemon)和C#API(Enyim.Caching)为基础,做一个"Hello world"级的程序,让我们真正感受到memcached就在我们身边。后一的文章,我们还讲memcached的核心部分(根据key来hash存取数据,缓存数据在server端的内存存储结构)和一些好的案例。

 下面的实例实现的功能很简单,根据key来存取一个object对象(要支持Serializable才行哦),因为服务器端数据都是byte型的数据组实现存在。

服务的启动:

1, 将memcached-1.2.1-win32.zip解决到指定的地方,如c:\memcached

2, 命令行输入 ‘c:\memcached\memcached.exe -d install‘ 
3, 命令行输入 ‘c:\memcached\memcached.exe -d start‘ ,该命令启动 Memcached,默认监听端口为 11211
  可以通过 memcached.exe -h 可以查看其帮助

  

第一步:配置config文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="enyim.com">
            <section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />
        </sectionGroup>
        <section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />
    </configSections>
    <enyim.com>
        <memcached>
            <servers>
                <!-- put your own server(s) here-->
                <add address="127.0.0.1" port="11211" />
                
            </servers>
            <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00" />
        </memcached>
    </enyim.com>
    <memcached keyTransformer="Enyim.Caching.TigerHashTransformer, Enyim.Caching">
        <servers>
            <add address="127.0.0.1" port="11211" />
            
        </servers>
        <socketPool minPoolSize="2" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00" />
    </memcached>
</configuration>

这里的port:11211是, memcached-1.2.1-win32在安装时默认使用的port.当然你可以用memcached.exe -p 端口号来自行设置。

第二步, 新建TestMemcachedApp的console project

引用Enyim.Caching.dll或者在solution中加入这个project(可以下载的代码中找到)。

基础代码如下:

//create a instance of MemcachedClient
MemcachedClient mc = new MemcachedClient();
// store a string in the cache
mc.Store(StoreMode.Set, "MyKey", "Hello World");
// retrieve the item from the cache
Console.WriteLine(mc.Get("MyKey"));

完整代码如下,

using System;
using System.Collections.Generic;
using System.Text;
using Enyim.Caching;
using Enyim.Caching.Memcached;
using System.Net;
using Enyim.Caching.Configuration;

namespace DemoApp
{
    class Program
    {
        static void Main(string[] args)
        {
            // create a MemcachedClient
            // in your application you can cache the client in a static variable or just recreate it every time
            MemcachedClient mc = new MemcachedClient();
            
            // store a string in the cache
            mc.Store(StoreMode.Set, "MyKey", "Hello World");

// retrieve the item from the cache
            Console.WriteLine(mc.Get("MyKey"));

// store some other items
            mc.Store(StoreMode.Set, "D1", 1234L);
            mc.Store(StoreMode.Set, "D2", DateTime.Now);
            mc.Store(StoreMode.Set, "D3", true);
            mc.Store(StoreMode.Set, "D4", new Product());

mc.Store(StoreMode.Set, "D5", new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });            
            Console.WriteLine("D1: {0}", mc.Get("D1"));
            Console.WriteLine("D2: {0}", mc.Get("D2"));
            Console.WriteLine("D3: {0}", mc.Get("D3"));
            Console.WriteLine("D4: {0}", mc.Get("D4"));

byte[] tmp = mc.Get<byte[]>("D5");

// delete them from the cache
            mc.Remove("D1");
            mc.Remove("D2");
            mc.Remove("D3");
            mc.Remove("D4");

// add an item which is valid for 10 mins
            mc.Store(StoreMode.Set, "D4", new Product(), new TimeSpan(0, 10, 0));

Console.ReadLine();
        }

// objects must be serializable to be able to store them in the cache
        [Serializable]
        class Product
        {
            public double Price = 1.24;
            public string Name = "Mineral Water";

public override string ToString()
            {
                return String.Format("Product {{{0}: {1}}}", this.Name, this.Price);
            }
        }
    }
}

Server和Client API及实例代码下载(在Enyim Memcached 1.2.0.2版本上的修改)

下载memcached服务安装地址:http://www.danga.com/memcached/

Client API下载地址:http://www.danga.com/memcached/apis.bml

时间: 2024-10-10 23:56:06

enyim.com Memcached Client:memcached实例的相关文章

Memcached通用类(基于enyim.com Memcached Client)

一.如果用官方提供的方法,在web.config里面配置好了各个参数和服务器IP.如下图: <?xml version="1.0"?> <configuration> <configSections> <sectionGroup name="enyim.com"> <section name="memcached" type="Enyim.Caching.Configuration.

java memcached client

Memcach什么是Memcache Memcache集群环境下缓存解决方案 Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像.视频.文件以及数据库检索的结果等.简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度. Memcache是danga的一个项目,最早是LiveJournal 服务的,最初为了加速 LiveJournal 访问速度而开发的,后来被很多大型的网站采用. Memcac

安装java memcached client到maven repository

由于目前java memcached client没有官方的maven repository可供使用,因此使用时需要手动将其安装到本地repository.java memcached client的jar包下载地址:https://github.com/gwhalin/Memcached-Java-Client/downloads 目前2.6.2版本的java memcached client要依赖slf4j-simple.slf4j-api.commons-pool三个包,依此我们可以为其编

Memcached Client的释疑

1.目前大多数php环境里使用的都是不带d的memcache版本,这个版本出的比较早,是一个原生版本,完全在php框架内开发的.与之对应的带d的memcached是建立在libmemcached的基础上,所以相对来说,memcached版本的功能更全一些,目前只有Linux版本 .memcache:http://cn2.php.net/manual/en/book.memcache.php memcached:http://cn2.php.net/manual/en/book.memcached

Memcached之完整实例

import java.sql.Date; import com.danga.MemCached.MemCachedClient; import com.danga.MemCached.SockIOPool; public class MemCached { //创建全局唯一的实例 protected static MemCachedClient mcc=new MemCachedClient(); protected static MemCached memCached=new MemCach

MemCached Client集群方案

MemCached Client集群方案 By mingjun Hou Cluster的实现 Memcached作为集中式Cache,就存在着集中式的致命问题:单点问题,Memcached支持多Instance分布在多台机器上,仅仅 只是解决了数据全部丢失的问题,但是当其中一 台机 器出错以后,还是会导致部分数据的丢失,一个篮子掉在地上还是会把部分的鸡蛋打破.因此就需要实现一个备份机制,能够保证Memcached在部分失效以后,数据还能够 依然使用,因 此做Cluster也是必要的. (1)  

memcached client --ref

Clients Client API's / libraries Updated Jul 14, 2012 by [email protected] ref:https://code.google.com/p/memcached/wiki/Clients C / C++ libmemcached http://libmemcached.org/ by Brian Aker, Commercial Support available from Data Differential BSD licen

memcached—向memcached中保存Java实体需注意的问题

今天以代码实例的形式总结一下向memcached中保存Java实体需注意的问题: memcached工具类代码: package com.ghj.packageoftool; import java.util.Date; import com.danga.MemCached.MemCachedClient; import com.danga.MemCached.SockIOPool; /** * Memcached工具类 * * @author GaoHuanjie */ public clas

Memcached 缓存用法实例

本文实例讲述了C#中Memcached缓存的用法,分享给大家供大家参考.具体方法如下: ICacheStrategy.cs文件如下: 复制代码 代码如下: public interface ICacheStrategy {         /// <summary>         /// 添加数据到缓存         /// </summary>         /// <param name="objId">缓存名称</param>