策略是这样的:

  • 处理请求的时候对每个页面进行查询缓存,缓存中有则直接返回页面内容
  • 如果缓存中没有当前页面,则对当前页面渲染,然后把渲染结果存储在redis中
  • 只有当数据库中发生数据变动的时候,如发生增加、删除、修改数据的时候,则直接清空缓存,方法虽然粗暴,但是不会有数据不同步的问题,页面也可以及时渲染。
  • 使用缓存后,无需对每个页面动态渲染了,尤其对CMS类的页面来说,动态页面完全是多余的。

实际测试,单个页面请求的速度提高了20倍以上。

三个函数即可搞定。 上代码

###全局缓存
def get_Cache(cachename, result):
    pname = 'xxxserver:cache:'
    if(redis_db.hexists(pname,cachename)):
        return redis_db.hget(pname, cachename)
    else: return result

def set_Cache(cachename, cachevalue):
    pname = 'xxxserver:cache:'
    redis_db.hset(pname, cachename, cachevalue)

def purge_Cache():
    pname = 'xxxserver:cache:'
    redis_db.delete(pname)