我在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
最佳做法是什么?非常感谢任何帮助。
由于
答案 0 :(得分:2)
你错过了缓存的重点。它是一个简单的键值存储,你不能对它进行查询:这就是数据库的用途。 Django中LINQ的等价物是ORM,您已经在使用它。但是在.NET中就像在Django中一样,你不能在缓存层上运行任意查询。
答案 1 :(得分:0)
对于缓存,就像memcache或redis一样,速度是第一位也是最重要的,所以简单的键值对就像你说的那样:
cache.get(<some key>)
或
redis.hget(<some id>)
我认为像[{1}}这样的make cache查询的意图在深度后端的业务模型查询中更常用,更有用,而不是缓存层。像关系数据库一样,如mysql或postgresql。
总之,对于缓存,更关心如何使其更简单,更快捷。对于业务工作,例如订单查询,您可以使用复杂查询,例如<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
由于