我该如何生成缓存键

时间:2017-05-01 13:49:43

标签: django caching memcached

我想为每个问题缓存以下模型和缩短的链接。

class Question(models.Model):
    question_text = models.CharField('text', max_length=200)
    pub_date = models.DateTimeField('publication date', default=timezone.now)
    allow_multiple_choices = models.BooleanField(default=False)


class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField('text', max_length=200)
    votes = models.IntegerField('votes', default=0)

    def __str__(self):
        return self.choice_text

我应该如何生成密钥?这样的事情是否足够?

cache.set('question' + question.id, question)
cache.set('shortened' + question.id, shortened)

1 个答案:

答案 0 :(得分:1)

这应该做。但我不确定创建的实例的范围。如果它们是全局的,我们保证密钥不重叠。

来自id

的文档
  

返回对象的“标识”。这是一个整数(或长整数)   整数)保证对于该对象是唯一的和常量的   在其一生中。两个具有非重叠寿命的对象可以   具有相同的id()值。

可能您应该尝试其他方法,这可以保证您的收藏品的密钥唯一性,并且具有统一的分布。 在我们的实现中,我们将从实例标识数据生成一些哈希码( md5或sha1 )。