redis 缓存python 实现

1. 安装数据库

开启三台虚拟机,安装mariadb和redis

服务IP
redis192.168.10.11
mysql192.168.10.12
客户端192.168.10.13
[root@C7Base01 ~]# yum -y install mariadb mariadb-server
[root@C7Base02 ~]# yum -y install redis

注意:需要关闭redis的密码认证,在/etc/redis.conf注释掉requirepassbind 0.0.0.0

2. 配置mysql

准备数据

CREATE DATABASE mydemo;
USE mydemo;
CREATE TABLE info(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(30));
INSERT INTO info(name) VALUES('zhangsan'),('lisi'),('wangwu');

为mysql创建一个远程登录用户并授权相应的数据库。

GANTE ALL ON mydemo.* TO 'dw'@'%' IDENTIFIED BY '123';
GANTE ALL ON mydemo.* TO 'dw'@'localhost' IDENTIFIED BY '123';
QUIT;
3. 安装python3环境

在客户端配置python3

CentOS 7自带python为2版本已经过时,需要安装3版本。

#yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install epel-release
#安装python3.6
yum -y install python36
4. python脚本

安装python函数库redispymysql

pip3 install redis pymysql

在这里插入图片描述

缓存脚本

功能:根据name查询id,并且缓存到redis。

#!/bin/python3

import redis
import pymysql

# 使用redis库登录redis数据库
redis_client = redis.StrictRedis(host='192.168.10.12', port=6379, decode_responses=True)

#使用pymysql库登录mysql数据库
conn = pymysql.connect(
    host='192.168.10.11',
    user='dw',
    password='123',
    database='mydemo',
    port=3306,
    charset='utf8'
    )

#创建游标
mysql_cursor = conn.cursor()

#定义mysql数据库查询函数
def fetch_data_from_mysql(key):
    sql="SELECT id FROM info WHERE name='%s'"%key
    mysql_cursor.execute(sql)
    result = mysql_cursor.fetchone()
    if result:
        return result[0]
    else:
        return None

#定义执行逻辑,先查找redis数据库,有数据就返回,没有再查找mysql数据库再缓存数据并且返回数据
def get_data(key):
    cached_data = redis_client.get(key)
    if cached_data is not None:
        print('from redis!')
        return cached_data
    else:
        data = fetch_data_from_mysql(key)
        if data is not None:
            redis_client.set(key, data, ex=3600)
            print('from mysql!')
            return data
        else:
            return "Data not found"


if __name__ == "__main__":
    #要查找的键
    key = "lisi"
    #取返回结果
    result = get_data(key)
    #输出返回结果
    print(result)

:查询不同数据,修改key就好!

5. 验证

redis执行flushall清空所有数据!

在这里插入图片描述

查看mysql的数据表

key值设置为lisi,执行两次缓存脚本,第一次redis无缓存走mysql,第二次有缓存直接返回。

python3 huancun.py

查看redis的键

在这里插入图片描述

结束!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值