`
dengbaoleng
  • 浏览: 1131946 次
文章分类
社区版块
存档分类
最新评论

修改memcached,让memcached主动从数据库读取数据进行缓存

 
阅读更多

memcached的一般应用场景是:

1. 应用程序使用get指令根据key来查询cache是否hit

1.1 如果hit, 则使用缓存的值

2. 如果没有hit, 应用程序查询数据库后再将查询到的内容使用store指令保存到cache中, 方便下次使用.

但有的时候需要将memcached作为一个数据库前端使用,

即 当应用程序使用get指令查询某一条entry的时候,如果此时该key不在cache中, memcache主动地读取数据库并写入cache后,保证每次的get指令都能命中。

对于这样的应用场景,有很多现成的产品, 比如memcacheDB

俺也遇到了这种要求,.Net/JAVA/PHP 的client会连接memcached服务器读取entry, 如果entry不在cache中需要从mySQL数据库中读取后进行一定的逻辑处理后进行缓存。

看了半天发现还是直接修改memcached的源代码最方便。

http://memcached.org / 下载到 它的源代码一看,结构逻辑非常清晰。

核心数据结构是

item通过双向链表进行关联,并挂靠了一个hash结构。 item在保存的时候会根据entry的大小选择slab,这是为了防止内存碎片。

在thread.c文件中找到了item_get函数

这里,如果没有命中cache的话, do_item_get 返回NULL. 要加入的代码就很简单了

要注意的是,从数据库读取到内容后,需要在末尾加上/r/n,因为memcached里面就是这样保存的

分享到:
评论

相关推荐

    C#使用memCached实现缓存

    它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过...

    Memcached内存对象缓存

    它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过...

    Memcached缓存资料

    个人整理memcached缓存技术资料: 目录如下: 《Memcached内存分析、调优、集群.pptx》 《NET版分布式缓存Memcached测试实例.docx》 《Memcached管理及_.NET_开发.doc》 《memcached-win32-1.4.4-14.zip》 ...

    memcached 系统缓存

    它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过...

    分布式缓存系统Memcached在Asp.net下的应用

    1.打开程序,修改web.config中的数据库连接,改成你自己的数据库 2.修改Common/DB_Info.cs下查询语句, 改成你数据库中任意的表就行 cmd.CommandText = "select top 100 * from UM_Function order by FuncID"; 3....

    memcached-win32-1.4.4-14内存数据库

    它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过...

    .net c# memcached缓存获取所有缓存键的方法步骤.docx

    .net c# memcached缓存获取所有缓存键的方法步骤.docx

    Memcached v1.5.7 For Windows (附带Memcached和libevent源码两个版本)

    它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过...

    Memcached_缓存系统

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。

    Memcached v1.5.3 For Windows (附带Memcached和libevent源码)

    它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过...

    memcached原理和使用详解

    它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。对数据库的高频率访问是限制数据使用率的一个瓶颈,所以可以给数据库做一个高速缓存。memcache就是一个理想的选择。而且...

    memcached X64的 缓存工具

    它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过...

    Memcached安装包,windows版本,32位和64位

    它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过...

    memcached 分布式缓存服务

    它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过...

    Memcached 学习资料(memcached Memcached使用手册 Memcached源码剖析笔记)

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻...它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。

    Memcached源码剖析笔记

    它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。 Memcached是一个自由、源码开放、高性能、分布式内存对象缓存系统,目的在于...

    Memcached v1.5.2 For Windows (在MSYS环境里Mingw-w64 x32 x64编译)

    它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过...

    Memcached v1.5.4 For Windows (附带Memcached和libevent源码两个版本)

    它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过...

    memcached_1.4.4.rar

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。

    Memcached构建缓存服务器的方法

    许多Web应用都将数据保存到关系型数据库( RDBMS)中,应用服务器从中读取数据并在浏览器中显示。 但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、 网站显示延迟等重大影响。 Memcached/...

Global site tag (gtag.js) - Google Analytics