Flask-论坛开发-5-memcached缓存系统
对Flask感兴趣的,可以看下这个视频教程:http://study.163.com/course/courseLearn.htm?courseId=1004091002
### 介绍:
哪些情况下适合使用 memcached 呢?存储验证码(图形验证码、短信验证码),登录 session 等所有不是至关重要且被访问到的几率较大的数据。
### 安装(Windows):
使用 cmd 进入到对应目录,执行 memcached.exe -d install
### 启用(管理员权限):
使用 cmd 进入到对应目录,执行 memcached.exe -d start
### 启动时的参数:
-d 让 memcached 在后台运行
-m 指定最多能占用多少内存,以 M 为单位,默认 64M,超出后会新数据会替换掉最开始的数据
-p 指定占用的端口,默认 11211
-l 指定哪些 ip 可以连接,如(-l 0.0.0.0 代表所有机器都能连接)默认只能通过本机连接
### 查看是否启用:
打开任务管理器,点击 [服务] 选项,若存在 memcached 服务则说明已经启用
### 可能出现的问题:
1. 提示没有权限:打开 cmd 的时候使用管理员的身份
2. 缺少 pthreadGC2.dll 文件:将 pthreadGC2.dll 文件拷贝到 windows/System32 目录下
3. 不要放在含有中文字符的路径下
### telnet 连接 memcached 格式:telnet ip port
### 如何验证 telnet 已经连接上 memcached 了?
set username myyd 0 60 3 # 创建一个数据,名字为 myyd ,0 代表是否需要压缩,存储 60 秒,其值只能包含 3 个字符
abc # 输入 myyd 对应的值
get username # 获取 username 对应的名字和值
quit # 退出
### memcached 语法(memcached 以键值对的方式存储数据)
登录: telnet [ip] [port]
## set:创建一个新的数据,格式如下:
> set username 0 120 4 # 其中,username 是 key,MYYD 是 value,0 代表不压缩,120 代表过期时间(s),4 代表值只能是 4 个字节
> MYYD
## get:获取指定数据,如:
> get username
## delete:删除指定数据,如:
> delete username
## flush_all:清除 memcached 中的所有数据
## incr:给 key 的值执行相加操作,格式如下:
> set age 0 120 2
> 18
> incr age 2 # 只能对数值类型进行相加
> get age # 会得到 20
## decr:给 key 的值执行相减操作,格式如下:
> set age 0 120 2
> 18
> decr age 2 # 只能对数值类型进行相加
> get age # 会得到 16
## stats:查看 memcached 的相关信息,最常用的是查看 get 命中率(get 时是从 memcached 中获取的概率)。但实际上还可以看其他的信息,如下:
> stats
> STAT get_miss 2 # get miss 次数
> STAT get_hits 2 # get hits 次数
> STAT curr_items 1 # 当前 memcached 中总共有多少键值对
> 等等
### 使用 python 操作 memcached:
1. 连接 memcached
import memcache
mc = memcache.Client(['127.0.0.1:11211'],debug=True)
2. 设置键值对
mc.set('username','MYYD',time=120) # 不需要设置值的长度,time 为过期时间(单位s),默认为 0,0 代表永不过期
3. 设置多个键值对
mc.set_multi({'username':'MYYD','age':'18'},time=120) # 设置多个键值对时,传入一个字典
4. 获取指定数据
username = mc.get('username')
print(username)
5. 删除指定数据
mc.delete('username')
6. 给 key 的值执行相加操作(可以应用在文章的阅读量上)
mc.incr('age') # 默认在原来的基础上加 1
mc.incr('age',delta=5) # 若指定了 delta 则可以自定义增长数
7. 给 key 的值执行相减操作
mc.decr('age') # 默认在原来的基础上减 1
mc.decr('age',delta=5) # 若指定了 delta 则可以自定义递减数
8. memcached 分布式存储
所谓 memcached 分布式存储,就是启用多台服务器去存储 memcached 数据,实现 memcached 分布式存储的方式如下:
mc = memcache.Client(['127.0.0.1:11211','192.168.110.110:11211'],debug=True) # 在连接时候传入开启了 memcached 服务的机器的 IP 地址即可
当你 set 数据的时候,会存入不同的服务器中,达到分布式存储的功能。
Flask-论坛开发-5-memcached缓存系统的更多相关文章
- Linux下搭建Memcached缓存系统
首先说下抱歉,博主近期单位经常加班.博客更新有点慢.希望大家理解,草稿箱里存了不少内容,等不忙时候一点点填坑~ 在一般的站点开发学习时候.都会把数据存放在RDBMS(关系型数据库系统(Relation ...
- Memcached 缓存系统简介
memcached官网:http://memcached.org/ What is Memcached? Memcached是一个自由开源的,高性能,高并发,分布式内存对象缓存系统. Memcache ...
- 6.memcached缓存系统
1.memcached的安装和参数 memcached缓存系统一般还是部署在linux服务器上,所以这里只介绍linux上memcache的安装 首先切换到root用户,然后apt-get insta ...
- (转)实战Memcached缓存系统(7)Memcached的一些基础FAQ
1. Memcached是什么? Memcached是分布式的内存对象缓存系统. 2. Memcached的基本数据结构是什么? Memcached是基于Key/Value对的HashMap.每一对, ...
- (转)实战Memcached缓存系统(1)Memcached基础及示例程序
1.Cache定义 (1)狭义概念:用于CPU的相对高速处理与主存(Main Memory)的相对低速处理的之间起到协调功能的硬件设备. (2)广义概念:用于速度相差较大的两种硬件之间,起到协调两者数 ...
- django之memcached缓存系统
django其他缓存方法:(https://www.cnblogs.com/jishuweiwang/p/6110809.html) memcached版本 <1.5 1. memcached缓 ...
- (转)实战Memcached缓存系统(8)Memcached异步实时读写问题的解决方案SAC
在使用Memcached时,一般实时读写的场景并不多见.但多是Memcached写入后,在一定时间后才会有读操作.但是如果应用场景,是写入后瞬间即会有读操作呢?似乎没有什么特别之处,我们依然可以这样写 ...
- (转)实战Memcached缓存系统(4)Memcached的CAS协议
1. 什么是CAS协议 很多中文的资料都不会告诉大家CAS的全称是什么,不过一定不要把CAS当作中国科学院(China Academy of Sciences)的缩写.Google.com一下,CAS ...
- (转)实战Memcached缓存系统(3)Memcached配置参数初解
一.基本参数 在我们第一次安装Memcached时,一般都是用过这个命令: memcached -m 512 -u root -d -l 127.0.0.1 -p 11211 我们先来解释这几个参数的 ...
- memcached学习笔记5--socke操作memcached 缓存系统
使用条件:当我们没有权限或者不能使用服务器的时候,我们需要用socket操作memcached memcached-client操作 特点: 无需开启memcache扩展 使用fsocketopen( ...
随机推荐
- node学习笔记_04 express相册
学习node用express框架做了一个相册展示及上传功能: 1.没有连接服务器,这里全部是操作文件夹 2.安装上传文件的依赖formidable,npm install --save formida ...
- HTML5原生拖拽事件的值传递(三dataTransfer对象)
引用一篇博客,讲解的比较详细:http://www.tuicool.com/articles/j6Zbam
- 转载 WebService 的CXF框架 WS方式Spring开发
WebService 的CXF框架 WS方式Spring开发 1.建项目,导包. 1 <project xmlns="http://maven.apache.org/POM/4.0 ...
- metamask源码学习-metamask-controller.js
The MetaMask Controller——The central metamask controller. Aggregates other controllers and exports a ...
- ESP8266开发综合篇(SDK开发-视频教程总揽)
为了解决基础教程简单入门但不实用,项目方案非常实用但比较难的问题,开始推出8266开发综合篇 综合篇涉及到AT,LUA,SDK,LUA(sdk)开发,LUA和SDK开发会同步进行,后期再整理AT指令的 ...
- 8-51单片机ESP8266学习-AT指令(单片机采集温湿度数据通过8266发送给C#TCP客户端显示)
http://www.cnblogs.com/yangfengwu/p/8785516.html 先写单片机端的程序 先把源码和资料链接放到这里 链接: https://pan.baidu.com/s ...
- 常见 HTTP/FTP/WebSocket 错误代码大全 - 转
HTTP 1xx消息 这一类型的状态码,代表请求已被接受,需要继续处理.这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束.由于HTTP/1.0协议中没有定义任何1xx状态码,所以除 ...
- ASP.NET Core 登录失败。该登录名来自不受信任的域,不能与集成身份验证一起使用。
原文:ASP.NET Core 登录失败.该登录名来自不受信任的域,不能与集成身份验证一起使用. 当进行数据迁移的时候提示 修改appsettings配置连接串的Trusted_Connection ...
- LNMP 1.x升级到LNMP 1.4教程及注意事项和多PHP版本使用教程
LNMP 1.x版本基本都可以正常升级到1.4使用1.4的管理脚本和新的功能. 升级管理脚本:wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz &am ...
- 【下一代核心技术DevOps】:(三)私有代码库阿里云Git使用
1. 引言 使用DevOps肯定离不开和代码的集成.所以要想跑通整套流程,代码库的选型也是非常重要的.否则无法实现持续集成.目前比较常用的代码管理有SVN和GIt 如果还使用SVN的,建议尽早迁移到G ...