溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

基于python+mysql+redis緩存設(shè)計(jì)與數(shù)據(jù)庫(kù)關(guān)聯(lián)數(shù)據(jù)處理

發(fā)布時(shí)間:2020-07-20 18:59:57 來(lái)源:網(wǎng)絡(luò) 閱讀:1847 作者:DBAspace 欄目:數(shù)據(jù)庫(kù)

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ù)讀取并更新緩存

 基于python+mysql+redis緩存設(shè)計(jì)與數(shù)據(jù)庫(kù)關(guān)聯(lián)數(shù)據(jù)處理

適用場(chǎng)景:對(duì)數(shù)據(jù)實(shí)時(shí)性要求不高,更新比較不頻繁


如下圖,先寫入redis然后,利用守護(hù)進(jìn)程等方式,定時(shí)寫入到數(shù)據(jù)庫(kù)

 基于python+mysql+redis緩存設(shè)計(jì)與數(shù)據(jù)庫(kù)關(guān)聯(lián)數(shù)據(jù)處理


如下圖,先寫入數(shù)據(jù)庫(kù),然后再更新到緩存

 基于python+mysql+redis緩存設(shè)計(jì)與數(shù)據(jù)庫(kù)關(guān)聯(lián)數(shù)據(jù)處理

####

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。


向AI問一下細(xì)節(jié)

免責(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)容。

AI