Python 如何在不影响数据库的情况下重新排序memcache

Python 如何在不影响数据库的情况下重新排序memcache,python,google-app-engine,memcached,google-cloud-datastore,Python,Google App Engine,Memcached,Google Cloud Datastore,我正在用python在google app engine上编写一个web应用程序,使用jinja2作为模板系统,该应用程序基本上允许用户编写帖子/评论,并对其他用户的帖子进行排名。排名系统基于上/下票数和评论数。我试图使用memcache来存储这个计算值,并相应地对帖子进行排名 我只想偶尔将值存储在数据库中,以避免写入成本过高。我计划每10次投票/评论设置一个计数器并将其存储在数据库中。我是这样想的: # I update the counter every time that I add a

我正在用python在google app engine上编写一个web应用程序,使用jinja2作为模板系统,该应用程序基本上允许用户编写帖子/评论,并对其他用户的帖子进行排名。排名系统基于上/下票数和评论数。我试图使用memcache来存储这个计算值,并相应地对帖子进行排名

我只想偶尔将值存储在数据库中,以避免写入成本过高。我计划每10次投票/评论设置一个计数器并将其存储在数据库中。我是这样想的:

# I update the counter every time that I add a vote or comment
counter = 0
def posts_cache(update = False):
        global counter
        key = 'main'
        posts = memcache.get(key)
        if posts is None or update:
                logging.error("DB QUERY")
                posts = db.GqlQuery("SELECT * "
                                        "FROM Post "
                                        "ORDER BY rank DESC "
                                        "LIMIT 100",
                                         key)
                posts = list(posts)
                memcache.set(key, posts)
        if counter>=10:
                counter = 0
                #put the memcache posts in the database
        return posts
但我不知道如何将我在memcache中的帖子存储到数据库中。在python中有什么方法可以做到这一点吗?我查阅了文件,但没有找到明确的方法

  • 你不能这样做,因为memcache不是一个可靠的工具,因为它可以驱逐你的实体,然后你就会丢失数据
  • 批量存储实体并不会降低您的成本,您需要为每个实体的投入付费
  • 为了降低编写成本,请尝试在不需要索引的属性上设置index=false
  • 你不能这样做,因为memcache不是一个可靠的工具,因为它可以驱逐你的实体,然后你就会丢失数据
  • 批量存储实体并不会降低您的成本,您需要为每个实体的投入付费
  • 为了降低编写成本,请尝试在不需要索引的属性上设置index=false

  • 我在想,如果一篇文章获得3票或4票,我只需发表一次。但你是对的,我想这有点太冒险了。我在想,如果一篇文章得到3票或4票,我只需要投一次。但你是对的,我想这有点太冒险了。