在memcached中安全存储Python字符串和整数元组的最佳方法?
我有一个网页应用,想每分钟根据算法更新帖子排名并存储这些排名。为了显示更新后的帖子,我想避免使用数据库,而是从memcached获取数据(比如帖子标题、作者、排名等),这样会更快,对吧?
我有一个想法(顺便说一下,我在用Django),就是在视图中把从memcached获取到的序列化字符串转换回Python对象(用pickle),然后渲染一个模板,按正确的顺序显示帖子。不过,这样做可能不太安全,因为用户提交的数据(比如帖子标题等)可能包含一些字符,这些字符在解析时可能会出现问题。
1) 最好的解决办法是每次保存这些对象时清理所有数据,还是有其他解决方案?
2) 如果清理数据是一个选项,那么在我的帖子模型的各个字段中应该排除哪些字符呢?
3) pickle.dump需要一个文件来写入吗,还是我可以直接得到一个字符串作为输出?
谢谢大家。
需要存储的一个例子:
((post.id, post.title, post.upvotes, post.author.username), (,,,)... )
(比如25个帖子重复这样的格式)
1 个回答
0
为什么不直接让django.core.cache来处理这些事情呢?我是在一个已经把memcached作为缓存后端的django项目中这样做的:
$ 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提供了很好的按视图缓存和模板片段缓存的功能。