RDS可以和云数据库Memcache、云数据库Redis搭配使用,组成高吞吐、低延迟的存储解决方案。下面以云数据库Memcache与RDS的搭配使用为例介绍缓存数据持久化方案。
背景信息
与RDS相比,云数据库缓存产品有如下两个特性:
-
响应速度快,云数据库Memcache和云数据库Redis请求的时延通常在几毫秒以内。
-
缓存区能够支持比RDS更高的QPS(每秒处理请求数)。
环境要求
-
本地环境或者ECS已安装memcached并且已启动memcached环境(支持SASL扩展)。
memcached下载地址:memcached。
memcached安装步骤,请参见memcached安装步骤。
-
以Python为例,本地或者ECS环境需安装Python、pip、python-memcached。
python-memcached安装命令如下:
sudo pip install python-memcached
memcached安装步骤
-
将下载的memcached安装文件上传到Linux系统,例如
/opt/soft
目录下。 -
执行如下命令,解压memcached压缩包。
tar -zxvf memcached-1.6.9.tar.gz
-
下载libevent库。
说明
下载地址为:libevent下载地址
-
执行如下命令,解压libevent压缩包:
tar -zxvf libevent-2.1.12-stable.tar.gz
-
进入libevent解压目录,依次执行如下命令,安装libevent:
sudo ./configure --prefix=/usr/local/libevent sudo make sudo make install
说明
–prefix是安装路径配置项。
-
进入memcached解压目录,依次执行如下命令,安装memcached:
sudo ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent sudo make sudo make install
-
执行如下命令,启动memcached的服务器:
sudo /usr/local/memcached/bin/memcached -d -m 10 -u root -p 11211 -c 256 -P /tmp/memcached.pid
-
执行如下命令,查看服务是否启动成功:
ps -ef | grep 11211
如果启动成功,返回类似如下结果:
root 16940 1 0 Mar23 ? 00:00:05 /usr/local/memcached/bin/memcached -d -m 10 -u root -p 11211 -c 256 -P /tmp/memcached.pid
-
执行如下命令,结束服务:
sudo kill `cat /tmp/memcached.pid`
代码示例
云数据库Memcache与RDS搭配使用的代码示例如下:
#!/usr/bin/env python
import memcache
import mysql_client
def memcache_demon():
memcache_client = memcache.Client(["ip:port"], debug=True)
#在云数据库Memcache中查找某个值
res = memcache_client.get('s_id')
print("res:", res)
if res is not None:
return res #查询到值则返回
else:
#未查询到值,则在RDS查询操作
res = mysql_client.fetchone()
# 向云数据库Memcache中写入缓存数据,并设置过期时间
memcache_client.set('s_id', res, time=30)
return res
Python连接数据库获取数据代码示例如下:
import pymysql
def fetchone():
db = pymysql.connect(host='ip',
user='user',
password='pwd',
database='dbname',
port=3306,
charset='utf8')
# 使用cursor()方法创建一个游标对象cursor
cursor = db.cursor()
# 使用execute()方法执行SQL查询
cursor.execute("select s_id from student")
s_id = cursor.fetchone();
if s_id:
print('s_id:',s_id)
# 关闭游标
cursor.close()
# 关闭数据库连接
db.close()
return s_id
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/166730.html