cache de dados python

Método de cache de dados

  1. Com base na memória, como armazenar informações de dados em um dicionário;
  2. Com base em arquivos, como armazenamento de dados em arquivos **.txt, **.csv, **.sqlite;
  3. Com base no banco de dados (redis, memcache).

Cache baseado no dicionário como memória [decorador]

def huancun_info(fun_name):
	dict_info = {}
	def fun(*args, **kwargs):
		key = "-".join(args)
		if key not in dict_info.keys():
			info = fun_name(*args, **kwargs)
			dict_info[key] = info
			return info
		else:
			print("已缓存,直接返回数据")
			return dict_info[key]
	return fun
  • Uso: Use para @+huancun_infoadicionar acima do nome da função que requer informações em cache.
  • Desvantagem: O período de armazenamento dos dados em cache é curto, ou seja, desde o início da execução do decorador de cache até o final de todo o programa.
  • Vantagens: lógica simples, fácil.

Cache comum baseado em arquivo

import re
import ast
def file_cache(fun_name):
	def fun(*args, **kwargs):
		filename = "-".join(args)
		# 文件名中不能包含\/:*?"<>|,使用正则表达式将这些数据替换成空
		pattern = re.compile("""(\\\|/|:|\*|\?|\"|<|>|\|)""")
		filename = pattern.sub("", filename)
		cache_path = f"{filename}.txt"
		if not os.path.exists(cache_path):
			result = fun_name(*args, **kwargs)
			with open(cache_path, "w", encoding="utf-8") as f:
				# 强制类型转换
				result = str(result)
				# 使用write写入文件操作,参数必须是字符串
				f.write(result)
			return result
		else:
			with open(cache_path, encoding="utf-8") as f:
				result = f.read()
				# 使用literal_eval函数将文件中读取的数据转换为原来的数据
				result = ast.literal_eval(result)
			return result
	return fun
  • Vantagens: Os dados podem ser armazenados por um longo período de tempo.
  • Desvantagem: Se houver muitos dados armazenados em cache, eles ocuparão muito espaço em disco. Se houver muitos arquivos em cache, os arquivos não serão fáceis de gerenciar.

 Cache baseado em Redis

  • Use redis para preparar as condições.
  • Vantagens: Os dados podem ser salvos por um longo tempo e con.set()o terceiro parâmetro pode ser definido. A unidade de tempo para salvar os dados gravados é segundos e é salvo permanentemente por padrão.
  • Desvantagens: Para usar rediso banco de dados, você precisa importar redispacotes, instalar rediso banco de dados e iniciar rediso serviço, ou seja, as condições específicas de preparação .

おすすめ

転載: blog.csdn.net/qq_41663420/article/details/129795123