python cache_python 内存cache
我们说的cache
为了缓解数据库的压力, 我们一般都会把热数据放到缓存, 常用的缓存只要有redis, memcache等. 但是像redis, memcache这样的缓存我们真的一定需要需要么. 非也!非也!redis, memcache这样的缓存, 更多的是给无状态的程序使用, 当一个请求过来, 我们启动一个python进程, 处理完成之后, 进程释放, 我们无法保存各种数据的状态, 于是我们引入的redis, memcache等第三方有状态服务, 帮助我们解决这个问题. 可是如果我们程序本身就是有状态的, 这个时候还是用redis做缓存就会显得有些鸡肋了(这个地方不是绝对的, 每个程序有自己需求).
一个简单的内存缓存
#coding=utf-8
from time import time
class Cache:
'''简单的缓存系统'''
def __init__(self):
'''初始化'''
self.mem = {}
self.time = {}
def set(self, key, data, age=-1):
'''保存键为key的值,时间位age'''
self.mem[key] = data
if age == -1:
self.time[key] = -1
else:
self.time[key] = time() + age
return True
def get(self,key):
'''获取键key对应的值'''
if key in self.mem.keys():
if self.time[key] == -1 or self.time[key] > time():
return self.mem[key]
else:
self.delete(key)
return None
else:
return None
def delete(self,key):
'''删除键为key的条目'''
del self.mem[key]
del self.time[key]
return True
def clear(self):
'''清空所有缓存'''
self.mem.clear()
self.time.clear()
# 代码来自:https://github.com/ma6174/pycache/blob/master/cache.py
内存cache
说白了就是一个变量, 我们把这个变量保存在内存里, 同时给它一个过期时间, 过期则失效.
cache失效策略
懒惰失效, 去取数据的时候才失效. redis事实上也是用这种失效模式, 用空间换取性能.
欢迎大家订阅雀观代码, 我将给你讲述, 中小企业程序员, 淘金路上的故事.
python cache_python 内存cache相关推荐
- python gc内存_禁用 Python GC,Instagram 性能提升10%
通过关闭 Python 垃圾收集(GC)机制,该机制通过收集和释放未使用的数据来回收内存,Instagram 的运行效率提高了 10 %.是的,你没听错!通过禁用 GC,我们可以减少内存占用并提高 C ...
- Python基于内存缓存简单实现
Python基于内存缓存简单实现 整体设计思路 整体是使用字典来进行存储键值对. 过期时间? 想要知道一个缓存的 key 是否失效,就必须知道这个 key 是啥时候放进去的,所以需要有一个 put_t ...
- python 申请内存空间、用于创建多维数组_python 申请内存空间,用于创建多维数组的实例...
以三维数组为例 先申请1个一维数组空间: mat = [None]*d1 d1是第一维的长度. 再把mat中每个元素扩展为第二维的长度: for i in range(len(mat)): mat[i ...
- python在内存中生成Zip文件!
python在内存中生成Zip文件! - 天真的好蓝啊 - 博客园 python在内存中生成Zip文件! import zipfile import StringIO class MemoryZipF ...
- python多线程内存越要越大_Python 面试:这9个问题你一定要掌握!
作为一个程序员,可能或多或少经历过一些技术面试,有些是编程语言本身的问题,有些是跟工程相关的问题. 笔者自己被面试过或者面试过别人,今天我们来总结关于Python程序员面试的时候经常被问到的9个问题, ...
- python共享内存
python共享内存 共享内存(Shared Memory)是最简单的进程间通信方式,它允许多个进程访问相同的内存,一个进程改变其中的数据后,其他的进程都可以看到数据的变化. 共享内存是进程间最快速的 ...
- python中内存管理机制一共分为多少层_python 内存管理机制
内存管理机制 python中万物皆对象,python的存储问题是对象的存储问题,并且对于每个对象,python会分配一块内存空间去存储它 Python的内存管理机制:引入计数.垃圾回收.内存池机制 ...
- 变量 常量 Python变量内存管理 赋值方式 注释
目录 变量 1.什么是变量 2.为什么有变量? 3.定义变量 4.变量的组成 5.变量名的命名规范 6变量名的两种风格 常量 Python变量内存管理 1.变量存哪儿? 2.Python垃圾回收机制 ...
- 清理linux内存cache
清理linux内存cache 在使用grep从很多文件中搜索特定数据串的时候,发现内存使用迅速提高,主要是cache的使用占用了相当多的内存.在使用下面命令的时候忽视了文件的数量和文件大小,导致cac ...
最新文章
- oVirt 3.4.3-1 LiveCD ISO based on CentOS 6.5
- Verilog中`define和parameter有什么区别
- GDI+:自定义控件时如何使用Region来输出特定区域
- Codeforces Round #588 (Div. 2) D. Marcin and Training Camp 思维
- java读取邮箱附件_使用javamail获取附件内容
- 爱上MVC3系列~RenderAction与RenderPartial及一个页面多个表单提交
- spring的依赖注入的方式(待更新)
- MTK 刷机工具操作说明(多路)
- 蔡学镛:文档模板,天使或恶魔?
- 1、ZigBee 开发教程之基础篇—ZigBee简介和学习方法
- 两个60后大叔的新能源战争:王传福与曾毓群的万亿赌局
- 微信小程序更改checkbox和radio样式
- 执着于音,一起开启Fidelio音乐之旅
- SAP PLM CVAPI_DOC_VIEW 获取DMS文档原件URL地址示例(Originals File)
- 《树莓派开发笔记 - 第1部分 基础篇》第7章 树莓派变身路由器
- python爬虫:获取菜鸟网站上url
- 恶意进程(云查杀)-DDOS木马
- [VB.NET]浅谈MDI窗体的多窗体编程
- 只会用 xxl-job?更强大的新一代分布式任务调度框架来了!
- linux下使用迅雷的完美办法(免费)