zoukankan      html  css  js  c++  java
  • C# Memcache集群原理、客户端配置详细解析

    概述

      memcache是一套开放源的分布式高速缓存系统。由服务端和客户端组成,以守护程序(监听)方式运行于一个或多个服务器中,随时会接收客户端的连接和操作。memcache主要把数据对象缓存到内存中,通过在内存里维护一个统一的巨大的hash表。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。memcache基于一个存储键/值对的hashmap进行存储对象到内存中。memcache是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

    特性:  
      •在 Memcached中可以保存的item数据量是没有限制的,只要内存足够 。
      •Memcached单进程在32位系统中最大使用内存为2G,若在64位系统则没有限制,这是由于32位系统限制单进程最多可使用2G内存,要使用更多内存,可以分多个端口开启多个Memcached进程 。
      •最大30天的数据过期时间,设置为永久的也会在这个时间过期,常量REALTIME_MAXDELTA
      •单个item最大数据是1MB,超过1MB数据不予存储,常量POWER_BLOCK 1048576进行控制

    Memcache集群原理

      Memcache:通过客户端驱动实现集群。Redis、MongoDb:通过服务器端实现集群;Memcache初始化驱动的时候,可以给定一个集合,如

    1 string[] servers = { "172.20.10.7:11211","172.20.10.8:11211"};

    驱动实现集群原理图

    Memcache优缺点:

      1、不能作为持久化保存

      2、存储数据有限:1M【大于1M,人为进行分割】

      3、存储只能key-value

      4、集群数据没有复制和同步机制。【奔溃不会影响程序,没有主从复制机制(没有额外复制开销)】

      5、内存回收不是很及时,LRU:未使用内存>过期内存>最近最少使用内存 惰性删除(也算是缺点)

      好了,我们现在大概知道Memcache干什么用的呢,其实方法很简单,请参考我上篇博客:https://www.cnblogs.com/chenyanbin/p/11415368.html

    代码实现:

      1、下载dll客户端类库

        地址:https://sourceforge.net/projects/memcacheddotnet/

        百度云盘:

          链接:https://pan.baidu.com/s/1tIkdYdp8rkKtXMeOeT24AA
          提取码:5yk2

      2、引入类库

       3、添加引用

      4、 代码

     1             //分布式Memcached服务器ip 端口
     2             string[] servers = { "172.20.10.7:11211"}; //Memcache机器IP
     3             //初始化池
     4             SockIOPool pool = SockIOPool.GetInstance();
     5             pool.SetServers(servers); //关联连接池
     6             pool.InitConnections = 3; //初始化链接
     7             pool.MinConnections = 3; //最小连接数
     8             pool.MaxConnections = 5; //最大连接数
     9             pool.SocketConnectTimeout = 1000; //Socket超时连接时间
    10             pool.SocketTimeout = 3000; //Socket超时时间
    11             pool.MaintenanceSleep = 30; //Socket休眠时间
    12             pool.Failover = true;
    13             pool.Nagle = false;
    14             pool.Initialize(); //初始化
    15             //客户端实例
    16             MemcachedClient mc = new MemcachedClient();
    17             mc.EnableCompression = false; //启动压缩
    18             mc.Add("keykey", "valuevalue"); //添加
    19             //mc.Delete("keykey"); //删除
    20             //mc.Set("", ""); //设置
    21             //mc.Get(""); //获取

    实现:

    成功

     

    示例DEMO

    链接:https://pan.baidu.com/s/1QhHEO71jMDCbZ72lbFNNcw
    提取码:0a5i

    如果这篇文章对你有帮助,帮忙推荐下,有不懂的地方欢迎下方留言~~

  • 相关阅读:
    位操作符:&位与、|位或、^异或、~求反、<<左移位、>>带符号右移位、>>>无符号右移位
    【leetcode】496. Next Greater Element I
    after_create and after_commit
    rails跳过回调的方法
    ruby执行周期性任务
    Nokogiri爬虫教程
    用ruby调用执行shell命令
    Redis使用详细教程
    rails中params[:id]与params["id"]分析
    mysql备份与恢复数据
  • 原文地址:https://www.cnblogs.com/chenyanbin/p/11441490.html
Copyright © 2011-2022 走看看