最新公司有个web项目,要求的并发数有点高。以前很少做网站这一块,特来请教一下各位大神。
主要是网站有个api调用,每秒读写数据库达到三千次左右,输出一个简单的josn。不知道用php apache linux 单台服务器 这样的配置行不行呢?
这个场景,缓存到底用是memcache,还是用Redis比较好呢?
之前没有使用过缓存,查询了一些资料恶补了一番,但是对 缓存数据 写入 mysql 还是模棱良可,不知哪位大神可以给出代码实例吗?谢谢了。

解决方案 »

  1.   

    两者都一样,就看你能安装成功哪一个了
    memcache 扩展写的比 Redis 扩展好
    memcache 扩展可直接存取 php 的数组、对象,Redis 扩展则需序列化
      

  2.   

    这个要看具体应用场景,
    若是简单的存取key-value这样的数据用memcache好一些
    若是要支持数据持久化,多数据类型(如集合、散列之类的),用列表类型做队列之类的高级应用,就用redis你这个主要是读的话,建议还是memcache
      

  3.   

    看需求。如果需要持久化的用redis,不需要的,当缓存使用的,使用memcache就好。
      

  4.   


    具体是有个表写的比较多,看了网上的建议,都说是redis比较好,然而今天上午倒腾了一上午,都出现安装错误。
    倒是memcache安装成功了。
    看资料也是说memcache 支持php更好,只是不知道用memcache有什么思路写mysql,就是这个API不停的被调用,需要往一个表里面插入一行数据,数据需要被及时保存,而原本的数据存储是使用mysql的。
    数据本身很简单,一共才有五个表,其余表都是查询偏多。
      

  5.   


    memcache 安装配置成功了,Redis 安装的时候总是出现警告和make错误。现在我主要是不清楚新插入的数据该什么时候保存,还有memcache  不停的connect 和 get等等,会不会造成性能瓶颈。我在网上看到一篇资料,是说因为类似这个原因引起的
      

  6.   

    这个持久化,原本使用mysql存储数据的,一般说的redis的持久化貌似是跟mysql不搭架的吧。怎么适时的把数据从缓存中写入mysql,大神能给个例子么
      

  7.   

    你说插入比较多,插入也用不到缓存啊,不管是memcache还是redis都是(主要是)做缓存用的,插入就走你的mysql
    像查询,第一次查询就mysql,并记录在memecache/redis里,下次再来查就直接读memecache/redis若你实在想做缓存的插入,假如你用memecache,在每次执行插入的时候都把数据存在内存中,并存一个标记count,每次执行插入都检查一次count这个值,若是大于等于10(可自己设置),你就执行插入(一次插入10条数据),并将count置为0,如此反复,就能将10插入变为一次
    但是遇到服务器宕机,你这缓存中的10条数据就不见了
      

  8.   

    写入应该很快啊。跟读取也没啥关系啊。只是读取数据 如果不是那么实时的话可以用mem  
      

  9.   


    就主要是这个插入太多了, 高峰期上千条每秒了,想减少mysql的并发啊。另外请教大神 memecache  不停的get,connect这样会不会造成性能瓶颈。
      

  10.   

    这种事情要根据实际情况进行考量,不是靠冥想能解决的。更是不能想当然Apache 默认并发数为 250
    MySQL 默认并发数为 150
    假定你没有对其修改那么,对于每秒三千的访问,你并没有说有数据丢失现象的存在
    显然这个配置可以说还是合适的memcache 和 Redis 都是都是基于内存的
    如果你增大了 Apache 和 MySQL 的并发数,势必会和 memcache 和 Redis 争抢内存。那么如何合理的分配有限的物理内存就成了问题关键。MySQL 提供有内存表,你可以象访问文件表一样的访问他,而不需要访问 memcache 和 Redis 服务器的而外开销
    当然,如果你只使用 Redis 或更高级的 noSQL 就另当别论了以上是环境相关的一些考量使用缓存的流程是:
    if 缓存中存在所需的数据
        返回缓存中的数据
    else
       查询数据库
       写入缓存
       返回数据
    endif显然缓存会降低实时性
      

  11.   

    nginx+mongodb+memcache