GAE Python: Използване на филтър и курсор с memcache

Да кажем, че имате списък с публикации с 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("категория","едно")

Има ли някаква функция, която можете да направите? Или просто трябва да преминете през болката, за да филтрирате първо всички категории, преди да кеширате всички публикации.


person tipsywacky    schedule 28.01.2013    source източник


Отговори (1)


Можете да поставите именувани неща в memcache и да ги извадите отново чрез техния ключ като едно цяло. Изглежда ми така, сякаш поставяте в memcache непълна заявка или модел, а не резултатите от заявка, които след това можете да потенциално филтрирате.

Погледнете NDB, голяма част от memcaching се извършва за вас с това (не за заявки обаче).

Така че можете да филтрирате данните, които получавате от memcache, но няма команди за извършване на филтриране в memcache.

Разгледайте наличните функции: https://developers.google.com/appengine/docs/python/memcache/functions

person Paul Collingwood    schedule 28.01.2013
comment
Благодаря много. Забравих, че мога просто да използвам python, за да филтрирам елементите. Първоначално обаче използвах курсора, за да направя пагинация. Простото използване на python също би свършило работа. Мислите ли, че е по-добре да не използвате курсора за пагиниране? - person tipsywacky; 28.01.2013
comment
Страхувам се, че зависи. Курсорите са страхотни, но не забравяйте, че курсорите могат да остареят, докато ги използвате, така че наистина зависи от конкретния случай на употреба. - person Paul Collingwood; 28.01.2013