目前正在研究python和redis。我以烧瓶为框架,在设计蓝图。在
为了让我的API使用redis实现缓存,我尝试了Flask cache和redis simple cache。
缺点是Flask-Cache即使更改了函数的参数,也会保存该函数。每个函数只保存一次。
根据redis-simple-cache,它将其密钥保存为SimpleCache-<key name>
,这在我这方面并不可取。在
所以我的问题是,如何创建一个decorator来保存和检索或者检查是否存在特定键的键。 我知道一个节省装饰是可能的。但是是否可以使用检索或检查装饰器??如果我错了,请纠正我。谢谢您。在
你似乎没有仔细阅读Flask-Cache documentation。缓存不会忽略参数,并且缓存键是可自定义的。项目提供的装饰器已经为您提供了所需的功能。在
从Caching View Functions section:
因此,默认的缓存键是
request.path
,但是您可以指定一个不同的键。{eem>使函数成为默认的参数。在从^{} decorator documentation :
以及
因此,您可以将
key_prefix
设置为一个函数,它将被调用(不带参数)以生成密钥。在此外:
传递此函数的参数与传递视图函数的参数相同。总之,这允许您生成所需的任何缓存键;要么使用}或其他源中提取更多信息,要么分配给
key_prefix
并从request
或{view_function.make_cache_key
并访问view函数接收的相同参数。在然后是^{} decorator :
所以这个修饰符完全基于传递给函数的参数来缓存返回值。它也支持
make_cache_key
函数。在我使用了这两个decorator使googleappengineflask项目的规模达到每月两位数的数百万次浏览量,并将结果存储在googlememcached结构中。使用Redis只需要设置一个配置选项。在
您可以使用这个cache decorator,您创建的缓存对象必须是flask缓存对象,而不是django对象,即应该支持缓存.get以及缓存.set方法,这是非常灵活的,基于您想要创建缓存键的方式,即
““
2-3个实用程序方法从这个file导入到同一个repo中,您可以将它们放在同一个文件中。在
相关问题 更多 >
编程相关推荐