看到有不少人用redis/memcahed 作为关系数据库的缓冲,但是键值数据库并不具备条件查询功能?简单的查询我们可以自己用另外的办法实现,复杂的查询就无能为力了,关系数据的查询是多种多样的,比如用户信息的各种匹配查询、商品属性的各种匹配查询等,面对这些复杂的查询,内存数据库似乎很难应对,那么为何二者还那么流行作为关系数据库的缓冲呢?

解决方案 »

  1.   

    简单来说,比如php+memcache+mysql的方式,php代码里面,可以从memcache(缓存数据是key-value形式)里面读,如果命中的话就提升速度了。如果没命中,就会去数据库里面找到数据后放到memcache里面。php对memcache的常用操作有:存数据-set(key,value);取数据-get(key);删除数据-delete(key)等。
      

  2.   

    redis并不要直接对应你数据库的各种查询组合,它只用保存你访问最频繁的返回给客户端的数据,而这一般是json数据刚好符合kv格式
      

  3.   

    哦,原来是这样。本来我还想把事件记录同步一部分到内存数据库中呢,可是一想,事件记录每个人查的筛选条件不同,时间范围不同,该放哪些再内存中呀,整体事件记录又巨大,不可能全放入。看来这个事件记录是不能放redis中了。 不过我好奇的是,mysql的cache中,存放的都是写什么数据呢
      

  4.   

    哦,原来是这样。本来我还想把事件记录同步一部分到内存数据库中呢,可是一想,事件记录每个人查的筛选条件不同,时间范围不同,该放哪些再内存中呀,整体事件记录又巨大,不可能全放入。看来这个事件记录是不能放redis中了。 不过我好奇的是,mysql的cache中,存放的都是写什么数据呢
    MySQL也是存放一些经常被查询的数据结果等到cache中
      

  5.   

    像我的事件记录,是经常查,但是数据量不小,而且每个人的查询条件又不一样,它会放到cache里面吗?