我需要向用户返回一个相当大的文件(11MB).出于某些原因,我不能只提供文件的直接URL(http://www.sample.com/mybigfile.exe); 相反,它必须通过代码访问.
我不想一遍又一遍地从磁盘上读取它,而是想把它保存在memcached中(如果这不是个好主意,请告诉我).一切似乎都工作正常(没有错误),但是当我尝试从memcached中检索文件时,我总是得到None,好像文件没有被缓存一样.
可以保存的是否有尺寸限制?
这是代码:
def download_demo():
"""
Returns the demo file
"""
KEY = "xyz"
TIME = 86400 #24 hours
buff = memc.get(KEY)
if not buff:
file = open(FILENAME, 'r')
buff = file.read()
memc.set(KEY, buff, TIME)
print "Content-Type:application/x-download\nContent-Disposition:attachment;filename=%s\nContent-Length:%s\n\n%s" % (os.path.split(FILENAME)[-1], len(buff), buff)
Run Code Online (Sandbox Code Playgroud) 我有一个服务器站点,每天推送200k unqiues,流量大约每40天翻一番(过去5个月).
我几乎只打算将mysql_query函数的输出缓存一个小时左右.如果缓存早于该缓存,请运行查询,将结果重新放回缓存中一小时.
我的mysql数据库大小约为200mb(可能增长10-20mb /月).
我通过编写HTML输出并使用它们几分钟来完成大量文件缓存,然后重新生成html.
不幸的是,由于它是一个数据库站点,它允许许多排序,搜索和排序方法,以及分页....有超过150,000个缓存页面.我也没有缓存搜索查询,这会导致大部分负载.
我想实现一个缓存系统,我想知道哪一个更快.很想看到一些基准.
我觉得我还不清楚,从文件或memcached中读取内容会更快吗?为什么?
我想在每次重启/重装django服务器时刷新memcached.我使用cherrypy进行生产和内置服务器进行开发.
我会在CACHES之后将其添加到settings.py:
from django.core.cache import cache
cache.clear()
Run Code Online (Sandbox Code Playgroud)
但它会进行递归导入:
Error: Can't find the file 'settings.py' in the directory containing 'manage.py'. It appears you've customized things.
You'll have to run django-admin.py, passing it your settings module.
(If the file settings.py does indeed exist, it's causing an ImportError somehow.)
make: *** [server] Error 1
Run Code Online (Sandbox Code Playgroud)
还有其他建议吗?谢谢.
是否有一个共同的api,如果我在Redis或Memcached之间切换,我不需要更改我的代码,只需配置设置?
例如,我有一些具有相同前缀的缓存项,例如
'app_111111', 'app_222222', 'app_333333', ...
Run Code Online (Sandbox Code Playgroud)
我可以通过任何memcached命令删除这样的'app_xxxxxx'项吗?
我有一个社交网络
users表大约有60,000行
朋友表约有100万行(用于确定谁是你的
朋友)
我想做一个朋友饲料,墙,无论你喜欢什么叫它,它会显示用户状态贴(推特类型的帖子)之类的东西,它会显示一些不同的项目但是一开始它只是朋友状态和也许博客文章.
基本上,您只会看到使用您朋友列表中的用户ID发布的内容.
我一直在努力想出最好的方法并且没有走得太远,但这是我最新的想法.
目前要建立这个饲料,我必须
获取大朋友桌上的朋友ID列表
从上面的结果中获取朋友ID中的流数据
加入用户表以获取发布者图片URL和用户名
然后加入评论表以获取在Feed项目上发布的评论
这是构建该Feed的一项重大任务
到目前为止,我有3个想法,这是你的帮助可以进来的地方.
Memcache选项:
文件缓存选项:
执行与memcache选项相同但将此数据作为数组保存到缓存文件而不是内存,然后将此缓存文件包含在页面中.
我不确定哪种是性能的最佳方法我理解memcache将所有内容存储在内存中所以有两万个可以使用大量内存和文件缓存的朋友的朋友只有在用户需要它时才将它放在内存中如果我是正确.此外,如果我使用文件方法,当用户退出网站时,我会删除那里的缓存文件,因此缓存文件夹永远不会是太大的文件
会话缓存选项:
请给我你的意见或任何建议或信息,因为我对缓存知之甚少,我已经阅读了很多,但有时其他人的想法有很多帮助
有没有人知道在Windows上支持PHP7的Memcache版本?
Memcache非常适合PHP 5.6(在Windows上),但我找不到PHP7的版本.