• 缓存 Memached


    https://github.com/enyim/EnyimMemcached

    http://www.newasp.net/soft/63735.html#downloaded/

    http://blog.csdn.net/zhangyatoua/article/details/50945763

    http://download.csdn.net/detail/e_wsq/4358982

    https://redislabs.com/lp/memcached-c-sharp/

    我的代码

    http://git.oschina.net/rocky132/Memached_learn

    why Memcached ?

    高并发访问数据库,容易造成死锁

    磁盘io读写缓慢

    多客户端可以共享缓存

    Net+memory >> io   //从局域网访问另一台机器的内存要比读写io要快

    读写性能完美

    超简单集群搭建Cluster

    开源 open source

    没有提供主从赋值功能,也没有提供容灾等功能,所以的代码基本都是只是考虑性能最佳。不能做数据持久化(redis)。

    学习成本非常低,入门非常容易

    丰富的成功案例

    Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。.net httpruntime.cache不支持跨服务器(不支持分布式)。

    访问量大的网站有必要用到分布式缓存,小网站没有必要用memcache
    Memcached能缓存什么?
    通过在内存里维护一个统一的巨大的hash表,Memcached能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。

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

    资料

    原理

    memcached分服务器端和客户端,可以配置多个服务器端和客户端,应用于分布式的服务非常广泛。

    Memcached是以守护程序(监听)方式运行于一个或多个服务器中,随时会接收客户端连接和操作。

    memcached是一种无阻塞的socket通信方式服务,基于libevent库,由于无阻塞通信,对内存读写速度非常之快。

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

      最大键长为250字节,大于该长度无法存储,常量KEY_MAX_LENGTH 250控制

    单个item最大数据是1MB,超过1MB数据不予存储,常量POWER_BLOCK 1048576进行控制, 
      它是默认的slab大小

    MemCache的工作流程如下:先检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中(memcached客户端不负责,需要程序明确实现);每次更新数据库的同时更新memcached中的数据,保证一致性;当分配给memcached内存空间用完之后,会使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据,  闲置 > 过期>最少访问

    Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像视频文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。

    内存模型:Memcache预先将可支配的内存空间进行分区(slab),每个分区里再分成多个块(chunk)大小1MB,但同一个分区里 块的长度(bytes)是固定的。不存在内存碎片。

     

    插入数据:查找适合自己长度的块,然后插入,会有内存浪费

    惰性删除: 它并没有提供监控数据过期的机制,而是惰性的,当查询到某个key数据时,如果过期那么直接抛弃。

    集群搭建原理:

    Memcache 服务器端并没有提供集群功能,但是通过客户端的驱动程序实现了集群配置。

    客户端实现集群的原理:首先客户端配置多台集群机器的ip和端口的列表。然后客户端驱动程序在写入之前,首先对key做哈希处理得到哈希值后对总的机器的个数进行取余,然后就选择余数对应的机器。

     

    安装memcached 服务

    c:memcachedmemcached.exe -d install
    启动、运行
    c:memcachedmemcached.exe -d start
    c:memcachedmemcached.exe -d stop
    卸载
    c:memcachedmemcached.exe -d uninstall
    默认端口 11211
    验证
    netstat -ano|findstr "11211"
    连接
    telnet 127.0.0.1 11211
    检查memcached当前服务状态
    stats

     

    多个web服务器共享缓存

    c#操作memcached 代码

  • 相关阅读:
    LGWR Trace Warning: Log Write Time ? Maybe not an issue
    Transaction & Undo
    XML Function at a glance
    Java step by step (1) : simple Spring IoC container
    First Impression on BBED: recover deleted rows
    【SQL*PLUS】Copy Command
    SYS_CONTEXT('USERENV', 'HOST') Return NULL & Oracle Fixed Tables
    ORA12519
    Some ORAs (32001, 00106)
    First Impression on BBED: explore block structure using map command
  • 原文地址:https://www.cnblogs.com/rockywood/p/6523632.html
Copyright © 2020-2023  润新知