MySQL 缓存失效机制是指当数据库中的数据发生变化时,如何确保缓存中的数据与数据库中的数据保持一致。缓存失效机制主要通过以下几种方式实现:
SETNX
命令)来保证只有一个请求去加载数据。以下是一个简单的示例,展示如何在数据更新时手动失效缓存:
import redis
import mysql.connector
# 连接 Redis
redis_client = redis.StrictRedis(host='localhost', port=6379, db=0)
# 连接 MySQL
mysql_conn = mysql.connector.connect(user='user', password='password', host='localhost', database='test')
mysql_cursor = mysql_conn.cursor()
def get_data(key):
# 先从 Redis 缓存中获取数据
data = redis_client.get(key)
if data is not None:
return data.decode('utf-8')
# 如果缓存中没有数据,从 MySQL 数据库中获取
mysql_cursor.execute("SELECT data FROM table WHERE key = %s", (key,))
result = mysql_cursor.fetchone()
if result is not None:
data = result[0]
# 将数据存入 Redis 缓存
redis_client.setex(key, 3600, data) # 设置缓存有效期为 1 小时
return data
return None
def update_data(key, new_data):
# 更新 MySQL 数据库中的数据
mysql_cursor.execute("UPDATE table SET data = %s WHERE key = %s", (new_data, key))
mysql_conn.commit()
# 手动失效 Redis 缓存
redis_client.delete(key)
# 示例调用
data = get_data('some_key')
print(data)
update_data('some_key', 'new_data')
通过以上机制和方法,可以有效管理 MySQL 缓存的失效问题,确保系统的稳定性和性能。
领取专属 10元无门槛券
手把手带您无忧上云