zoukankan      html  css  js  c++  java
  • 分布式缓存Memcached应用

    在实际项目中,我们有些相同的数据是经常要从数据库中读取访问的,这种重复极大的增加了数据库负载。缓存是解决这个问题的好办法。但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵活。此时Memcached可以帮助我们进行数据的缓存。

    参考自:https://www.cnblogs.com/hyruur/archive/2011/03/31/2000942.html

    Memcached是什么?
    高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。

    Memcached能缓存什么?
    通过在内存里维护一个统一的巨大的hash表,Memcached能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。

    Memcached的特点
    Memcached的缓存是一种分布式的,可以让不同主机上的多个用户同时访问, 因此解决了共享内存只能单机应用的局限,更不会出现使用数据库做类似事情的时候,磁盘开销和阻塞的发生。

    Memcached的使用 
     
    Memcached服务器端的安装 (此处将其作为系统服务安装)
    下载文件:memcached 1.2.1 for Win32 binaries (Dec 23, 2006)
        1、 解压缩文件到c:memcached
        2、 命令行输入 'c:memcachedmemcached.exe -d install' 
        3、 命令行输入 'c:memcachedmemcached.exe -d start' ,该命令启动 Memcached ,默认监听端口为 11211
        4、 通过telnet客户端测试连接memcached服务端的连接

         

       5、输入指令Stauts查看连接状态

             


    二  .Net项目中使用Memecached 

         1、 .NET memcached client library
           下载文件:https://sourceforge.net/projects/memcacheddotnet/

         2、在项目中引用dll文件

          

        3、代码实现方法

             

    1 namespace Memcached.MemcachedBench
    2 {
    3     using System;
    4     using System.Collections;
    5 
    6     using Memcached.ClientLibrary;
    7 
    8     public class MemcachedBench 
    9      {
    10          [STAThread]
    11         public static void Main(String[] args) 
    12          {
    13             string[] serverlist = { "10.0.0.131:11211", "10.0.0.132:11211" };
    14 
    15             //初始化池
    16              SockIOPool pool = SockIOPool.GetInstance();
    17              pool.SetServers(serverlist);
    18 
    19              pool.InitConnections = 3;
    20              pool.MinConnections = 3;
    21              pool.MaxConnections = 5;
    22 
    23              pool.SocketConnectTimeout = 1000;
    24              pool.SocketTimeout = 3000;
    25 
    26              pool.MaintenanceSleep = 30;
    27              pool.Failover = true;
    28 
    29              pool.Nagle = false;
    30              pool.Initialize();
    31 
    32             // 获得客户端实例
    33              MemcachedClient mc = new MemcachedClient();
    34              mc.EnableCompression = false;
    35 
    36              Console.WriteLine("------------测   试-----------");
    37              mc.Set("test", "my value");  //存储数据到缓存服务器,这里将字符串"my value"缓存,key 是"test"
    38 
    39             if (mc.KeyExists("test"))   //测试缓存存在key为test的项目
    40              {
    41                  Console.WriteLine("test is Exists");
    42                  Console.WriteLine(mc.Get("test").ToString());  //在缓存中获取key为test的项目
    43              }
    44             else
    45              {
    46                  Console.WriteLine("test not Exists");
    47              }
    48 
    49              Console.ReadLine();
    50 
    51              mc.Delete("test");  //移除缓存中key为test的项目
    52 
    53             if (mc.KeyExists("test"))
    54              {
    55                  Console.WriteLine("test is Exists");
    56                  Console.WriteLine(mc.Get("test").ToString());
    57              }
    58             else
    59              {
    60                  Console.WriteLine("test not Exists");
    61              }
    62              Console.ReadLine();
    63             
    64              SockIOPool.GetInstance().Shutdown();  //关闭池, 关闭sockets
    65          }
    66      }
    67 }

      4、结果展示

          

  • 相关阅读:
    【每天一道PAT】1001 A+B Format
    C++ STL总结
    开篇
    happen-before原则
    java多线程的状态转换以及基本操作
    集合初始容量
    fail-fast机制
    Stack
    Iterator
    Vector
  • 原文地址:https://www.cnblogs.com/Jenkin/p/9147550.html
Copyright © 2011-2022 走看看