【问题标题】:GAE Python: Using filter and cursor with memcacheGAE Python:在内存缓存中使用过滤器和游标
【发布时间】:2013-01-11 16:11:08
【问题描述】:

假设您有一个包含 5 个类别的帖子列表。 做memcache的时候,应该怎么过滤掉类别呢?

class Post(db.Model):
    title = db.StringProperty(required=True)
    category = db.StringProperty()
    desc = db.StringProperty()

当你做缓存时:

key = "allpost"
post = Post.all().order('-created')
memcache.set(key, post)

我在缓存对象上尝试了使用过滤器。显然它不会起作用。

cached_post.filter("category","one")

有什么功能可以做到吗?还是您只需要在缓存所有帖子之前先过滤所有类别。

【问题讨论】:

    标签: python google-app-engine google-cloud-datastore


    【解决方案1】:

    您可以将命名的东西放在内存缓存中,然后通过它们的键将它们作为一个单独的部分再次取出。在我看来,好像您将一个不完整的查询或模型放入 memcache,而不是您可以 潜在 过滤的查询的 results

    看看 NDB,大部分内存缓存都是为您完成的(但不是用于查询)。

    因此,您可以过滤从 memcache 获得的数据,但没有命令可以进行 in-memcache 过滤。

    看看可用的函数:https://developers.google.com/appengine/docs/python/memcache/functions

    【讨论】:

    • 非常感谢。我忘了我可以只使用 python 来过滤掉这些项目。但是,我最初使用游标来进行分页。简单地使用 python 也可以。你认为最好不要使用光标进行分页吗?
    • 恐怕“这取决于”。游标很棒,但不要忘记游标在使用时可能会“过时”,因此这实际上取决于您的具体用例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 2020-07-18
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多