Python 从memcached获取数据
我必须从memcached中获取数据。但是我的代码正在从数据库中获取它 伪代码如下所示:Python 从memcached获取数据,python,memcached,Python,Memcached,我必须从memcached中获取数据。但是我的代码正在从数据库中获取它 伪代码如下所示: given a URL, try finding that page in the cache if the page is in the cache: return the cached page else: generate the page save the generated page in the cache (for next time) return the gene
given a URL, try finding that page in the cache
if the page is in the cache:
return the cached page
else:
generate the page
save the generated page in the cache (for next time)
return the generated page
class CachedAPIView(APIView):
def get_queryset(self,request):
return function(self,request.data)
def get_object(self,queryset=None):
obj = cache.get('%s-%s'%(self.modelName.lower(),self.kwargs['pk']),None)
if not obj:
obj=super(CachedAPIView,self).get_object(queryset)
cache.set('%s-%s'%(self.modelName.lower(),self.kwargs['pk']),obj)
class ABC(CachedAPIView):
def fun(self,request,format=None):
request.data['PubIp']=getUserIP(request)
returnData=CachedAPIView.get_queryset(self,request)
if returnData == "TOKEN_ERROR":#token error
.....
elif returnData == "RECORD_NOT_FOUND":#bad request
......
else:
......
我的python代码如下所示:
given a URL, try finding that page in the cache
if the page is in the cache:
return the cached page
else:
generate the page
save the generated page in the cache (for next time)
return the generated page
class CachedAPIView(APIView):
def get_queryset(self,request):
return function(self,request.data)
def get_object(self,queryset=None):
obj = cache.get('%s-%s'%(self.modelName.lower(),self.kwargs['pk']),None)
if not obj:
obj=super(CachedAPIView,self).get_object(queryset)
cache.set('%s-%s'%(self.modelName.lower(),self.kwargs['pk']),obj)
class ABC(CachedAPIView):
def fun(self,request,format=None):
request.data['PubIp']=getUserIP(request)
returnData=CachedAPIView.get_queryset(self,request)
if returnData == "TOKEN_ERROR":#token error
.....
elif returnData == "RECORD_NOT_FOUND":#bad request
......
else:
......
任何帮助都将不胜感激。谢谢 我已经尝试过这个代码,它很有效
import hashlib
import json
from django.core.cache import cache
from .views import *
class CacheService():
def __init__(self, view=None, **kwargs):
self.data = kwargs
self.data.update({'view_name': view})
self.key = self.prepare_key()
def prepare_key(self):
return hashlib.md5(json.dumps(self.data, sort_keys=True).encode('utf-8')).hexdigest()
def set_to_cache(self, qs):
cache.set(self.key, qs)
def unset_cache(self, qs):
cache.set(self.key, None)
def delete_key_value(self):
cache.delete(self.key)
def get_from_cache(self):
return cache.get(self.key, None)
def clear_all_cache(self):
cache.clear()
这是cache.py文件。要缓存的视图如下所示:
class MyView(APIView):
def post(self,request,format=None):
'''
'''
Data=my_function()
cache_service = CacheService(qs_type='my_function()')
event_queryset = cache_service.get_from_cache()
if not event_queryset:
event_queryset = my_function()
cache_service.set_to_cache(event_queryset)
if event_queryset == "TOKEN_ERROR":#token error
............
elif event_queryset == "RECORD_NOT_FOUND":#bad request
.............
else:
......................