您好,登錄后才能下訂單哦!
1、添加表
CREATE TABLE tb_signin(
id INT,
user_name VARCHAR(10),
signin_num INT ,
signin_time DATETIME ,
gold_coin INT
);
INSERT INTO tb_signin
VALUES(1, 'ma', 0, NULL, 0),
(2, 'he', 0, NULL, 0),
(3, 'yu', 0, NULL, 0),
(4, 'hai', 0, NULL, 0),
(5, 'fang', 0, NULL, 0);
2、redis緩存鍵值設計
key value
表名:主鍵值:列名 列值
或者:
表名:主鍵值:列值1:列名1
示例:把id為1的人的簽到次數(假設為5)存儲到redis中則可如下操作:
set('tb_signin_rank:1:signin_num', 5)
類似數據庫一樣,通過主鍵便可獲取其它值
3、redis關聯數據庫的數據處理模式:
如圖,先判斷是否存在緩存(通常是根據key),如果存在則從緩存讀取,否則從數據庫讀取并更新緩存
適用場景:對數據實時性要求不高,更新比較不頻繁
如下圖,先寫入redis然后,利用守護進程等方式,定時寫入到數據庫
如下圖,先寫入數據庫,然后再更新到緩存
####
import ConfigParser import sys import redis import MySQLdb __name__ ==: pool=redis.ConnectionPool(=,=,=) r=redis.Redis(=pool) config=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 (,): result=r.zscore(,id) result: : db_cursor=dbcon.cursor() db_cursor.execute(,id) result=db_cursor.fetchone()[] r.zadd(,id,result) e: % e db_cursor.close() : () result = (result) (% (id, result))
###
zadd:命令用于將一個或多個成員元素及其分數值加入到有序集當中
zscore:命令返回成員的有序集合在鍵比分。如果成員沒有在排序集合存在,或鍵不存在,則返回nil。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。