我们说的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相关推荐

  1. python gc内存_禁用 Python GC,Instagram 性能提升10%

    通过关闭 Python 垃圾收集(GC)机制,该机制通过收集和释放未使用的数据来回收内存,Instagram 的运行效率提高了 10 %.是的,你没听错!通过禁用 GC,我们可以减少内存占用并提高 C ...

  2. Python基于内存缓存简单实现

    Python基于内存缓存简单实现 整体设计思路 整体是使用字典来进行存储键值对. 过期时间? 想要知道一个缓存的 key 是否失效,就必须知道这个 key 是啥时候放进去的,所以需要有一个 put_t ...

  3. python 申请内存空间、用于创建多维数组_python 申请内存空间,用于创建多维数组的实例...

    以三维数组为例 先申请1个一维数组空间: mat = [None]*d1 d1是第一维的长度. 再把mat中每个元素扩展为第二维的长度: for i in range(len(mat)): mat[i ...

  4. python在内存中生成Zip文件!

    python在内存中生成Zip文件! - 天真的好蓝啊 - 博客园 python在内存中生成Zip文件! import zipfile import StringIO class MemoryZipF ...

  5. python多线程内存越要越大_Python 面试:这9个问题你一定要掌握!

    作为一个程序员,可能或多或少经历过一些技术面试,有些是编程语言本身的问题,有些是跟工程相关的问题. 笔者自己被面试过或者面试过别人,今天我们来总结关于Python程序员面试的时候经常被问到的9个问题, ...

  6. python共享内存

    python共享内存 共享内存(Shared Memory)是最简单的进程间通信方式,它允许多个进程访问相同的内存,一个进程改变其中的数据后,其他的进程都可以看到数据的变化. 共享内存是进程间最快速的 ...

  7. python中内存管理机制一共分为多少层_python 内存管理机制

    内存管理机制 ​python中万物皆对象,python的存储问题是对象的存储问题,并且对于每个对象,python会分配一块内存空间去存储它 ​Python的内存管理机制:引入计数.垃圾回收.内存池机制 ...

  8. 变量 常量 Python变量内存管理 赋值方式 注释

    目录 变量 1.什么是变量 2.为什么有变量? 3.定义变量 4.变量的组成 5.变量名的命名规范 6变量名的两种风格 常量 Python变量内存管理 1.变量存哪儿? 2.Python垃圾回收机制 ...

  9. 清理linux内存cache

    清理linux内存cache 在使用grep从很多文件中搜索特定数据串的时候,发现内存使用迅速提高,主要是cache的使用占用了相当多的内存.在使用下面命令的时候忽视了文件的数量和文件大小,导致cac ...

最新文章

  1. oVirt 3.4.3-1 LiveCD ISO based on CentOS 6.5
  2. Verilog中`define和parameter有什么区别
  3. GDI+:自定义控件时如何使用Region来输出特定区域
  4. Codeforces Round #588 (Div. 2) D. Marcin and Training Camp 思维
  5. java读取邮箱附件_使用javamail获取附件内容
  6. 爱上MVC3系列~RenderAction与RenderPartial及一个页面多个表单提交
  7. spring的依赖注入的方式(待更新)
  8. MTK 刷机工具操作说明(多路)
  9. 蔡学镛:文档模板,天使或恶魔?
  10. 1、ZigBee 开发教程之基础篇—ZigBee简介和学习方法
  11. 两个60后大叔的新能源战争:王传福与曾毓群的万亿赌局
  12. 微信小程序更改checkbox和radio样式
  13. 执着于音,一起开启Fidelio音乐之旅
  14. SAP PLM CVAPI_DOC_VIEW 获取DMS文档原件URL地址示例(Originals File)
  15. 《树莓派开发笔记 - 第1部分 基础篇》第7章 树莓派变身路由器
  16. python爬虫:获取菜鸟网站上url
  17. 恶意进程(云查杀)-DDOS木马
  18. [VB.NET]浅谈MDI窗体的多窗体编程
  19. 只会用 xxl-job?更强大的新一代分布式任务调度框架来了!
  20. linux下使用迅雷的完美办法(免费)

热门文章

  1. 双目立体视觉笔记(二)
  2. 关于cpu流水线的各阶段周期,吞吐率计算问题
  3. fwrite 写到文件的头部 php,php fwrite 写文件
  4. 保弘实业|个人理财的范围包括哪些
  5. 读 GTD 时间管理法有感以及 tomato-pie 的一个新 feature
  6. 计算机滴滴响无法开机,电脑滴滴滴的响而且开不了机
  7. [转贴]希腊字母读音表
  8. 599 奋斗的小蜗牛
  9. 银行卡大小的充电宝,你有吗?
  10. 要在HTML页面显示如下数字图案,上机实验 7