您好,登錄后才能下訂單哦!
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緩存鍵值設(shè)計(jì)
key value
表名:主鍵值:列名 列值
或者:
表名:主鍵值:列值1:列名1
示例:把id為1的人的簽到次數(shù)(假設(shè)為5)存儲(chǔ)到redis中則可如下操作:
set('tb_signin_rank:1:signin_num', 5)
類似數(shù)據(jù)庫(kù)一樣,通過主鍵便可獲取其它值
3、redis關(guān)聯(lián)數(shù)據(jù)庫(kù)的數(shù)據(jù)處理模式:
如圖,先判斷是否存在緩存(通常是根據(jù)key),如果存在則從緩存讀取,否則從數(shù)據(jù)庫(kù)讀取并更新緩存
適用場(chǎng)景:對(duì)數(shù)據(jù)實(shí)時(shí)性要求不高,更新比較不頻繁
如下圖,先寫入redis然后,利用守護(hù)進(jìn)程等方式,定時(shí)寫入到數(shù)據(jù)庫(kù)
如下圖,先寫入數(shù)據(jù)庫(kù),然后再更新到緩存
####
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:命令用于將一個(gè)或多個(gè)成員元素及其分?jǐn)?shù)值加入到有序集當(dāng)中
zscore:命令返回成員的有序集合在鍵比分。如果成員沒有在排序集合存在,或鍵不存在,則返回nil。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。