分布式缓存之 memcache 实现分布式缓存

最近想搞点分布式,但是不知道整点什么,来点简单的吧。

今天讲下memcache的分布式缓存

首先下载memcache的服务器端 百度下可以找到

然后执行安装和开启(关闭服务器)命令(还有其他的命令 可以百度下)

memecached -d instal

memcached -d start(stop)

然后我们用vs建个console项目

用nuget 下载memcache的c#调用驱动 当然有一些驱动,我选择的是EnyimMemcached github开源地址为:https://github.com/enyim/EnyimMemcached

首先配置app.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>
        <add address="127.0.0.1" port="11211" />
        <add address="118.192.146.104" 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" />
      <add address="118.192.146.104" port="11211" />
    </servers>
    <socketPool minPoolSize="2" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00" />
  </memcached>
</configuration>

c#调用代码如下

 class Program
    {
        static void Main(string[] args)
        {
            MemcachedClient mc = new MemcachedClient();

            mc.Store(StoreMode.Set, "test", "hello world");

            Console.WriteLine(mc.Get("test"));

            Console.ReadLine();
        }
    }

这样的效果就是往这两台分布式服务器上写值,断掉其中一台服务器,可以仍然获取到值。

原文地址:https://www.cnblogs.com/nele/p/5484164.html