最近想搞点分布式,但是不知道整点什么,来点简单的吧。
今天讲下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(); } }
这样的效果就是往这两台分布式服务器上写值,断掉其中一台服务器,可以仍然获取到值。