您的位置:首页 > 数据库 > Memcache

memcache使用简记

2015-08-29 16:30 543 查看
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进行控制



Memcached缓存过期机制


* 惰性删除:它并没有提供监控数据过期的机制,而是惰性的,当查询到某个key数据时,如果过期那么直接抛弃。
比如键key1002在2015-04-09 13:54 :18 我设置他的值为:”我已设置过期时间1分钟“。他的过期时间为1分钟。等到2015-04-09 13:55 :18时数据应该过期,但在内存中还是会保存这条数据,而是等客户端来请求这条数据时判断数据是否过期。过期就直接删除返回空。如果内存满了memcached会把最长时间未使用到期的缓存记录给删除,腾出空间继续使用。memcache基于一个存储键/值对的hashmap进行存储对象到内存中。所以我们可以理解为主要在操作hashmap的键值对。

string SockIOPoolName = "Test_SockIOPoolName";
            string[] MemcacheServiceList = { "127.0.0.1:11211" };

            //设置连接池
            SockIOPool SPool = SockIOPool.GetInstance(SockIOPoolName);
            SPool.SetServers(MemcacheServiceList);
            SPool.Initialize();

            //实例化Client
            MemcachedClient MClient = new MemcachedClient();
            MClient.PoolName = SockIOPoolName;

          
            MClient.Add("Key1001", "Hello World");
          
            //查询缓存信息
            string str = MClient.Get("Key1001").ToString();

            //修改memcache缓存
            MClient.Set("Key1001", "Hello World - 修改版");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: