Memcache已经装上了,但是不太会用,学也都是一些储存变量,调用变量之类的,对如何实现我要的功能没有概念.现在问个实际点的问题.我做的一个网站有很多文章,每个文章都要统计点击量,现在每次访问文章页都要去update数据库,我感觉效率很低,我想用Memcache实现每次访问的时候先去写入到Memcache一个id.当我判断这个id总数超过1000的时候,一次性更新这些的点击量,我原来设想是用,连接起来这些id,然后update的时候写where id in (,,,,)  这么写,但是有个问题就是如果一个文章被访问多次就不好处理,只能先把多次的筛选出来分批更新.我想应该有一套成熟的方法来解决这个问题吧,谢谢大家了

解决方案 »

  1.   

    啊  还有人知道这么弄吗 或者给个PDO处理的简单提示...
      

  2.   

    用事务保证数据一致。如果当机,在memcached里面的内容肯定要丢失的。
      

  3.   

    http://hi.baidu.com/yjliii/blog/item/8323c1d1e6231ada562c84b9.html
      

  4.   

    为了防止宕机时数据丢失最后别用memcache了
      

  5.   

    用memcached这么久好像还可以吧,丢失时重新在写一次就可以了,但丢失的情况很少。
      

  6.   

    你可以按照超时时间来决定是读数据库写memcache或是去读memcache。这样比较好。另外貌似你是这样存储的:
    clickaid => 1,23,644,12,67765...用一个hash键存了所有click后的文章id,这样存储很不方便。你可以让一个文章id作为一个hash键,后面是它的点击次数,比如:
    a1 => 0
    a2 => 5
    a3 => 122
    ...
    前面的是文章id,后面的是点击次数。当发现某篇文章的点击量大于100的时候,去更新数据库并且给此hash键赋为0。或者直接把整个文章id和点击量的hash table当作一个数组存到一个hash键里
    click => array('a1'=>0,'a2'=>5,a3=>122...)
      

  7.   

    前面的是文章id,后面的是点击次数。当发现某篇文章的点击量大于100的时候,去更新数据库并且给此hash键赋为0。 这里说错了,这样的话你前台调取数据就永远也不会准确了,你还是按照时间来决定去数据库取数据然后更新memcache吧。当达到超时时间时,update数据库并且replce memcache的值 为 数据库里取出的值+memcache当前值。