所以我有一个webapp,我想在每分钟存储基于算法的帖子的当前排名。为了呈现更新的帖子,我想避免db并从memcached获取数据(例如帖子标题,作者,等级等)(更快,对吗?)。
一个想法是(我正在使用Django btw)视图将序列化字符串从memcached转换回python(使用pickle),然后呈现一个模板以正确的顺序显示帖子。但是,它可能是不安全的,因为用户提交的数据(帖子标题等)可能包含可能以不合需要的方式解析的字符。
1)保存这些对象时是否只是清理所有数据的最佳解决方案还是有其他解决方案?
2)如果清洁数据是一个选项,我应该在Post模型的各个字段中排除哪些字符?
3)pickle.dump是否需要写入文件,或者我可以将字符串作为输出吗?
谢谢你们。
需要存储的示例:
((post.id, post.title, post.upvotes, post.author.username), (,,,)... )
(比如25个帖子重复这样)
答案 0 :(得分:0)
为什么不让django.core.cache为您处理?我是从django项目中做到这一点的,它将memcached连接起来作为缓存后端:
$ python manage.py shell
In [1]: from django.core.cache import cache
In [2]: cache.set('woot', (3, 'blah', 590))
In [3]: cache.get('woot')
Out[3]: (3, 'blah', 590)
适用于任何可以腌制的python对象。
另外,为什么不用HTML和一切来缓存输出? Django提供了良好的每视图缓存和模板片段缓存。