memcached缓存mysql查询结果

介绍一个生产环境中memcached的使用场景,主要是memcached存储关系型数据库mysql的查询结果,比如网站的下载排名等,这种查询每次从关系型数据库中查询,会增加

介绍一个生产环境中memcached的使用场景,主要是memcached存储关系型数据库mysql的查询结果,比如网站的下载排名等,这种查询每次从关系型数据库中查询,会增加磁盘的i/o开销,而这个排名不需要实时的更新,所以我们把这个结果存在memcached中,memcached是把数据序列化存放在内存中,我们可以设置超时时间,然后周期性的从关系型数据库查询新的结果更新到memcached中。

我用python来写个小的demo演示这个场景。首先python连接memcached和mysql需要加载对应的模块。程序的作用就是:先从memcached查询薪水最高的两个人,打印他们的姓名和薪水,如果没有返回结果,说明memcached中不存在,那么我们从关系型数据库mysql中去查询结果,然后更新在memcached中,再次请求,就会从memcached直接返回结果。

安装python-memcached和MySQL-python包

yum install -y python-memcached  MySQL-python

#!/usr/bin/pythonimport sysimport MySQLdbimport memcachememc = memcache.Client([‘127.0.0.1:11211’], debug=1);key = memc.get(“top2salary”)if key != None:print “Load data from Memcache : %s,%s” % (key[0], key[1])else:print “Updating memcached data from MySQL.”conn = MySQLdb.connect (host = “127.0.0.1”,user = “root”,passwd = “123456”,db = “web_user”)cursor = conn.cursor()cursor.execute(‘select * from emp order by salary desc limit 2’)rows = cursor.fetchall()memc.set(‘top2salary’,rows,10)

mysql的emp表查询结果:

mysql> select * from emp;+————–+——–+| name| salary |+————–+——–+| Casillas| 10500 || Fernández | 350 || Varane| 21000 || Pepe| 16000 || Ramos| 35000 || Nacho| 4400 || Coentro| 12500 || Marcelo| 22000 || Carvajal| 10500 || Arbeloa| 6200 || Khedira| 19500 || Casemiro| 5300 || Xabi Alonso | 10500 || Modric| 35000 || Illarramendi | 16000 || Isco| 31000 || Bale| 70500 || Di María| 26500 || Ronaldo| 88000 || Jesé| 13000 || Benzema| 30000 || Morata| 10500 |+————–+——–+22 rows in set (0.00 sec)

查询当前薪水排名的两人,第一次执行memcached为空,,立刻去myql中查询,缓存在memcached,再次查都是从memcached返回,我在代码里设置超时时间10秒,10秒后清除缓存再次从mysql查询,如果这个时间段内mysql有新的数据变化,如插入更高薪水的人,那么会返回当前最新的结果,一般mysql被缓存在memcached中都是变化不太频繁的结果。

[root@localhost ~]# ./memc.pyUpdating memcached data from MySQL.[root@localhost ~]# ./memc.pyLoad data from Memcache : (‘Ronaldo’, ‘88000’),(‘Bale’, ‘70500’)[root@localhost ~]# ./memc.pyLoad data from Memcache : (‘Ronaldo’, ‘88000’),(‘Bale’, ‘70500’)[root@localhost ~]# ./memc.pyLoad data from Memcache : (‘Ronaldo’, ‘88000’),(‘Bale’, ‘70500’)

优点如果加载网页每次都查询mysql而且执行order by这样的sql语句对数据库的I/O负载增加,同时会减慢打开页面的速度。

本文出自 “老徐的私房菜” 博客,谢绝转载!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1869662.html

(0)
上一篇 2025年2月22日 08:12:55
下一篇 2025年2月22日 08:13:15

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • navicat连接mysql出现错误1045如何解决

    Navicat连接mysql出现1045错误如何解决? 使用Navicat连接mysql出现1045,可能的原因为忘记密码。 下面方法可以帮助重置密码: 1、以管理员权限运行cmd程序; 2、cd C:Program Files (x86)…

    2025年2月23日 数据库
    100
  • navicat for mysql怎么用

    navicat简单的使用方法: 1、创建数据库:选中连接名,右键,点击新建数据库。 2、删除数据库:选中要删除的数据库,右键,点击删除数据库。 3、创建数据表:双击test01,选中表,右键,新建表。 相关推荐:《Navicat for m…

    2025年2月23日 数据库
    100
  • 怎么使用navicat连接mysql

    打开Navicat Premium。 点击工具栏中的【连接】,选择【mysql】。 相关推荐:《Navicat for mysql使用图文教程》 在常规标签页,设置连接的名称、IP地址、帐号、密码等。 在【高级】标签页设置位置、编码方式、保…

    2025年2月23日 数据库
    100
  • navicate连接mysql数据库报错了怎么办

    问题描述: 安装好navicate后连接mysql出现如下图所示错误: 解决方法: 1、打开命令提示符,输入命令进入mysql 2、输入命令【ALTER USER ‘root’@’localhost&#8…

    2025年2月23日 数据库
    100
  • navicat如何查看mysql的操作记录

    出于好奇,想在navicat中查看mysql的操作记录,特此记录一下。 (学习视频分享:编程入门) 其实方法很简单,连接一个库,用快捷键Ctrl+H就好了。 你瞧,这历史日志就出来了。 如果快捷键有冲突的话,那么就点击左上角的【工具】,选择…

    2025年2月23日
    100
  • navicat如何查看mysql日志

    navicat查看mysql日志的具体方法: 1、使用Navicat服务器监控工具 2、打开日志开关 右边参数设置变量”log”值为”ON” 3、定位日志位置,查看日志 4、执行SQL注入语句…

    2025年2月23日 数据库
    100
  • navicat怎么建立数据库

    Navicat 建立数据库的步骤包括:连接到数据库服务器。创建数据库。设置数据库选项。创建表。插入数据。 如何使用 Navicat 建立数据库 步骤 1:连接到数据库服务器 打开 Navicat,点击“连接”菜单,选择“MySQL”。在“连…

    2025年2月23日
    100
  • 怎么用navicat创建一个数据库

    如何使用 Navicat 创建数据库?连接到 MySQL 服务器,输入连接信息并验证连接。右键单击连接,选择“新建数据库”并输入数据库名称。可选:右键单击数据库,选择“属性”以设置数据库属性。右键单击数据库,选择“新建表”并填写表名、字段和…

    2025年2月23日
    100
  • navicat怎么连接localhost

    通过 Navicat 连接 localhost 需按以下步骤操作:打开 Navicat 并新建连接。选择 MySQL 连接类型。输入主机名 localhost、默认端口 3306、默认用户名 root 和密码。测试连接以确保成功。保存连接并…

    2025年2月23日
    100
  • navicat怎么连接其他人的数据库

    在 Navicat 中连接他人的数据库,需要以下步骤:获取数据库连接信息(主机名、数据库名称、用户名、密码、端口号);在 Navicat 中创建连接,选择数据库类型并配置连接参数;测试连接并保存连接信息,即可访问他人的数据库。 如何使用 N…

    2025年2月23日
    100

发表回复

登录后才能评论