我在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 中一样,你不能在缓存层上运行任意查询。
-
对于缓存,如 memcache 或 redis,速度是首要的,也是最重要的,所以简单的键值对就像你说的那样:
cache.get(<some key>)
或
redis.hget(<some id>)
-
我认为您使缓存查询像
<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
谢谢