设为首页 收藏本站
查看: 966|回复: 0

[经验分享] flask cache with memcache

[复制链接]

尚未签到

发表于 2015-11-18 09:55:43 | 显示全部楼层 |阅读模式
  一开始 flask的cache type是 simple,然后在生产环境 可不能这么用吧,然后开始研究用memcached,然后一直出错。出错的原因是 libmemcached的版本和pylibmc的版本不对,然后,我结局了他就好了,这里就不标明如何搭建环境了,值得提醒的是,在pip 安装包的时候一定要指定好版本。
  代码如下:
  config.py
  (pythonenv)[xluren@test Flask-Cache_for_memcached_06]$ cat config.py
import os
class Config(object):
DEBUG=True
CACHE_TYPE = 'memcached'
SECRET_KEY = "d73b04b0e696b0945283defa3eee4538"
BASE_DIR = os.path.abspath(os.path.dirname(__file__))  
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(BASE_DIR, 'app.db')
CACHE_MEMCACHED_SERVERS=["10.210.71.145:11211"]
class MysqlConfig(Config):
SQLALCHEMY_DATABASE_URI = 'mysql://hello:hello@10.210.71.145:3306/sqlalchemy'
class MongoDBConfig(Config):
MONGOALCHEMY_DATABASE="mydb"
MONGOALCHEMY_SERVER="10.210.71.145"
MONGOALCHEMY_PORT=8888
POST_PER_PAGE = 3

run.py
  (pythonenv)[xluren@test Flask-Cache_for_memcached_06]$ cat run.py
from flask import Flask
import random
# import the flask extension
from flask.ext.cache import Cache   
app = Flask(__name__)
#import config setting
app.config.from_object("config.Config")
# register the cache instance and binds it on to your app
app.cache = Cache(app)   
@app.route("/")
@app.cache.cached(timeout=500,key_prefix="hello")  # cache this view for 30 seconds
def cached_view():
a=random.randint(0,100)
return str(a)
if __name__ == "__main__":
app.run(port=5000, debug=True, host='0.0.0.0')

github ,stackoverflow 是一对好基友,好工具啊。
  cache 验证的代码:
  <?php
$mem = new Memcache;
$mem->connect(&quot;127.0.0.1&quot;,  11211);
#add
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo &quot;Get key1 value: &quot; . $val .&quot;\n&quot;;
#modify
$mem->replace('key1', 'This is replace value', 0, 60);
$val = $mem->get('key1');
echo &quot;Get key1 value: &quot; . $val . &quot;\n&quot;;
#insert array
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60);
$val2 = $mem->get('key2');
echo &quot;Get key2 value: &quot;;
print_r($val2);
echo &quot;\n&quot;;
#delete
$mem->delete('key1');
$val = $mem->get('key1');
echo &quot;Get key1 value: &quot; . $val . &quot;\n&quot;;
#add
$mem->set('key1', 'This is k1 value', 0, 60);
$val = $mem->get('key1');
echo &quot;Get key1 value: &quot; . $val .&quot;\n&quot;;
#add
$mem->set('key2', 'This is k2 value', 0, 60);
$val = $mem->get('key2');
echo &quot;Get key2 value: &quot; . $val .&quot;\n&quot;;

#add
$mem->set('key3', 'This is k3 value', 0, 60);
$val = $mem->get('key3');
echo &quot;Get key3 value: &quot; . $val .&quot;\n&quot;;
$items=$mem->getExtendedStats(&quot;items&quot;);
$host=&quot;127.0.0.1&quot;;
$port=11211;
$items=$items[&quot;$host:$port&quot;]['items'];
print &quot;###############&quot;;
print_r($items);
print &quot;###############&quot;;
foreach($items as $key=>$values)
{
$number=$key;
$str=$mem->getExtendedStats (&quot;cachedump&quot;,$number,0);
$line=$str[&quot;$host:$port&quot;];
if( is_array($line) && count($line)>0)
{
foreach($line as $key=>$value)
{
echo $key.'=>';
print_r($mem->get($key));
echo &quot;\r\n&quot;;
}
}
}
$mem->flush();
$val2 = $mem->get('key2');
echo &quot;Get key2 value: &quot;;
print_r($val2);
echo &quot;\n&quot;;
$mem->close();
?>验证的时候,页面会有直观的体现,同时,通过代码访问memcached的,得到的效果更佳真实




  太爽了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-140606-1-1.html 上篇帖子: linux安装memcache过程 下篇帖子: LINUX命令行如何查看memcache运行状态
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表