查询python memcached数据

时间:2015-03-17 04:02:36

标签: python mysql django celery python-memcached

我在python memcach中存储了一些记录。对象结构如下所示。我如何像查询数据库一样访问或获取记录。

class CartDetails(models.Model):
    id              = models.AutoField(primary_key=True)
    item_name       = models.CharField(max_length = 100)
    location        = models.CharField(max_length = 250)
    item_type       = models.ForeignKey(ItemType)
    comments        = models.TextField(max_length = 250,blank=True)
    item_code       = models.CharField(max_length = 100)
    main_cat_id     = models.ForeignKey(MainCategory)

我知道我可以像这样访问内存缓存

cache.get(<some key>)

我想要一些东西就像我们在Django中查询一样

<some model>.objects.filter(<conditions>)

我的意思是有什么方法可以指定一些条件并从memcache获取记录。     cache.get()     #condition like item_name =“some item”,item_type = 1 etc

最佳做法是什么?非常感谢任何帮助。

由于

3 个答案:

答案 0 :(得分:2)

你错过了缓存的重点。它是一个简单的键值存储,你不能对它进行查询:这就是数据库的用途。 Django中LINQ的等价物是ORM,您已经在使用它。但是在.NET中就像在Django中一样,你不能在缓存层上运行任意查询。

答案 1 :(得分:0)

  1. 对于缓存,就像memcache或redis一样,速度是第一位也是最重要的,所以简单的键值对就像你说的那样:

    cache.get(<some key>)

    redis.hget(<some id>)

  2. 我认为像[{1}}这样的make cache查询的意图在深度后端的业务模型查询中更常用,更有用,而不是缓存层。像关系数据库一样,如mysql或postgresql。

  3. 总之,对于缓存,更关心如何使其更简单,更快捷。对于业务工作,例如订单查询,您可以使用复杂查询,例如<some model>.objects.filter(<conditions>)表达式。

答案 2 :(得分:0)

我发现可以使用pydblite来保存数据在内存中,这将有助于我查询内存中的数据库

for rec in (db("age") > 30) & (db("country") == "France"):
    print rec["name"] 

对于python缓存和redis,我只能使用密钥访问内存。

http://pydblite.readthedocs.org/en/latest/index.html

由于