相信的心就是你的魔法

Python中使用Redis做数据缓存

导入第三方库PyMySQL、Redis和pickle(把数据转化为二进制数据的第三方库)

1
2
3
4
import redis
import pymysql
import pickle
import time

与MySQL数据库建立连接,并获取数据:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def load_test_from_db():
con = pymysql.connect(
host='localhost',
port=3306,
user='root',
password='xxxx'
database='s_test',
charset='utf8'
)


with con.cursor() as cursor:
cursor.execute('select name, age from tb_test')
test = cursor.fetchall()
con.close()
return test

建立Redis连接,并从Redis缓存中获取数据,当缓存中没有数据的时候从MySQL数据库中获取数据并把数据存到缓存中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def main():
client = redis.Redis(
host='服务器公网ip',
port=6379, # redis端口,一般为6379端口
password='服务器连接密码'
)
s_time = time.time
data = client.get('test') # 获取数据
if data:
test = pickle.loads(data)
else:
test = load_test_from_db()
client.set('test',pickle.dumps(test))
e_time = time.time
print(test)
print('执行耗时:',e_time - s_time)

执行代码

1
2
if __name__ == '__main__':
main()

结论:从缓存中读取数据的速度远高于从内存中读取数据的速度,即利用Redis来做数据的储存能达到空间换取时间的目的。

------ 本文结束------