查询 python 内存缓存数据



我在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 像 item_name = "某些项目",item_type = 1 等

最佳实践是什么。任何帮助将不胜感激。

谢谢

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

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

    cache.get(<some key>)

    redis.hget(<some id>)

  2. 我认为您使缓存查询像<some model>.objects.filter(<conditions>)的意图在深度后端的业务模型查询中更频繁和有用,而不是缓存层。就像关系数据库一样,如mysql或postgresql。

总之,对于缓存,更关心的是使其更简单、更快捷。对于业务工作,如订单查询,您可以使用复杂的查询,如filter表达式。

我开始知道pydblite可用于将数据保存在内存中,这将帮助我像这样查询内存中的数据库

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

至于 Python 缓存和 Redis 我只能使用密钥访问内存中。

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

谢谢

相关内容

  • 没有找到相关文章

最新更新