【问题标题】:How should I generate cache keys我应该如何生成缓存键
【发布时间】:2017-05-01 13:49:42
【问题描述】:

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

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)

【问题讨论】:

    标签: django caching memcached


    【解决方案1】:

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

    来自id的文档

    返回对象的“身份”。这是一个整数(或长 integer) 保证对于这个对象是唯一且恒定的 在其生命周期内。两个生命周期不重叠的对象可能 具有相同的 id() 值。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-27
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 2015-04-24
      相关资源
      最近更新 更多