我正在努力学习如何使用memcache来减少数据库的负载。因此,我有一个cacheData函数,当给出一个键时,它会缓存博客文章,在本例中是“条目”。问题是,当我在博客上写一篇新文章并进行数据库查询时,它不会返回任何值,尽管新的帖子被添加到数据库中。为什么在我的数据库查询之后没有返回条目?
cacheData函数:
def cacheData(key, update = False):
value = memcache.get(key)
if value is None or update:
logging.error("DATABASE HIT&
由于Memcache无法设置密钥,我遇到了问题。基本上我有我的测试页面:
$db=new db;
$my_test_cache=$db->query("SELECT `txt` FROM `lang` WHERE `pg`='front' LIMIT 2", 10);
和一个用于缓存的db类:
class db {
public function query($query, $ttl=30, $cache=true, $compr=false) {
global $memcache;
if (
因此,我正在开发一个web应用程序--它必须为可伸缩性而构建。它将频繁的MySQL查询存储到缓存中。我已经准备好了几乎所有的东西--但我关心的是在哪里缓存数据的最佳实践。我和一些人谈过,其中一个人建议在所有的memcache节点上拆分每个键/值。
意思是如果我存储这个例子:'somekey','this is the value‘
它将被分到3个memcache服务器上。
这是一种更好的方式吗?或者memcache更多地建立在一对一的关系上?例如。
将值存储在服务器A上,直到它发生故障-转到服务器B并存储在那里。
这是我目前从我所做的研究和过去使用memcache的经验
我试图从GAE数据存储中删除一个对象,然后用memcache缓存剩余的数据存储对象。该对象正在被成功删除,但由于某种原因,python日志和memcache没有认识到其中一个已被删除。Datastore Viewer显示该对象已被删除,但日志显示项目的长度没有改变.而且,memcache只是缓存所有的项,好像没有发生删除一样。你能给出的任何建议都是非常感谢的。
Python代码:
yesterday = datetime.now()-timedelta(days=1) # one day ago
sessions = db.GqlQuery("SE
我已经创建了一个Google App Engine Apps,使用Python.The应用程序处理很多用户名。
它有一个可存储50K个用户名的数据库。每个用户名都有一个唯一的哈希值。它也被存储在数据存储中。
当任何应用程序用户提交任何用户名时。应用程序首先检查数据库中是否存在该用户名。
如果是新用户名,应用程序将计算新用户名的新散列,并将名称和散列存储在DataStore中。
如果用户名已经存在于数据存储中,它将从数据存储中检索旧散列。
示例代码:
class Names(db.Model):
name = db.StringProperty(required=True)
ha
class MainHandler(BaseHandler.Handler):
def get(self):
user = users.get_current_user() or "unknown"
posts = memcache.get('posts_%s' % user.user_id())
if not posts:
q = db.Query(P.Post)
q.filter('author =', users.get_current_user()).o