1,添加表
CREATE TABLE tb_signin (
id INT,
user_name VARCHAR (10),
signin_num INT,
signin_time DATETIME,
gold_coin INT
);
插入tb_signin
值(零,1,“马”,0,0),
(2, '他',0,NULL, 0),
(3,“玉”,0,NULL, 0),
(4,“海”,0,NULL, 0),
(5,“方”,0,NULL, 0),
2,复述,缓存键值设计
键,,,,,,,值
表名:主键值:列名,列值
或者:
表名:主键值:列值1:列第1名,
示例:把id为1的人的签到次数(假设为5)存储到复述中则可如下操作:
设置(“tb_signin_rank: 1: signin_num”, 5)
类似数据库一样,通过主键便可获取其它值
3,复述,关联数据库的数据处理模式:
如图,先判断是否存在缓存(通常是根据键),如果存在则从缓存读取,否则从数据库读取并更新缓存
适用场景:对数据实时性要求不高,更新比较不频繁
如下图,先写入复述,然后,利用守护进程等方式,定时写入到数据库
如下图,先写入数据库,然后再更新到缓存
# # # #
import ConfigParser import 系统 import 复述, import MySQLdb __name__ ==: ,,,=redis.ConnectionPool池(=,=,=) ,,,r=redis.Redis(=池) ,,,配置=ConfigParser.ConfigParser () ,,,: ,,,,,,,dbcon=MySQLdb.connect (=?????) ,,,MySQLdb.Error, e: ,,,,,,,e ,,,,,,,sys.exit () ,,,: ,,,,,,,,db_cursor=dbcon.cursor () ,,,,,,,,id (,): ,,,,,,,,,,,,db_cursor.execute (id) ,,,,,,,,,,,,db_cursor.execute () ,,,,,,,,r.zincrby (, id,,) ,,,e: ,,,,,,,,(%,e) ,,,,,,,,db_cursor.execute () ,,,,,,,,db_cursor.close () ,,,,,,,,() ,,,id (,): ,,,,,,,结果=r.zscore (id) ,,,,,,,结果: ,,,,,,,,,,,, ,,,,,,,,,,,,,,,db_cursor=dbcon.cursor () ,,,,,,,,,,,,,,,db_cursor.execute (id) ,,,,,,,,,,,,,,,结果=db_cursor.fetchone () [] ,,,,,,,,,,,,,,,r.zadd (id、结果) ,,,,,,,,,,,e: ,,,,,,,,,,,,,,,%,e ,,,,,,,,,,,,,,,db_cursor.close () ,,,,,,,, ,,,,,,,,,,,() ,,,,,,,,,,,result =,(结果) ,,,,,,,(%,(id,,结果))
# # #
zadd:
zscore: