Python中怎樣操作Redis庫(kù)

今天就跟大家聊聊有關(guān)Python中怎樣操作redis庫(kù),可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供長(zhǎng)沙縣網(wǎng)站建設(shè)、長(zhǎng)沙縣做網(wǎng)站、長(zhǎng)沙縣網(wǎng)站設(shè)計(jì)、長(zhǎng)沙縣網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、長(zhǎng)沙縣企業(yè)網(wǎng)站模板建站服務(wù),十余年長(zhǎng)沙縣做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

Redis庫(kù)在互聯(lián)網(wǎng)應(yīng)用的非常普遍,常常作為“緩存層”存在,因?yàn)橄啾萂ySQL來(lái)說(shuō)它要快非常多,Redis是可以作為應(yīng)用的唯一數(shù)據(jù)存儲(chǔ)庫(kù)而不需要MySQL的,但如果搭配MySQL使用,因?yàn)樾阅鼙萂ySQL快它常常作為Web應(yīng)用服務(wù)的緩存層,使用時(shí)先訪問(wèn)Redis,訪問(wèn)不到再訪問(wèn)MySQL,同時(shí)更新到Redis(下次就能訪問(wèn)到這個(gè)緩存了)。

Redis主要支持5種數(shù)據(jù)結(jié)構(gòu):String: 字符串、Hash: 散列、List: 列表、Set: 集合、Sorted Set: 有序集合,個(gè)人非常喜歡Redis就是因?yàn)檫@些數(shù)據(jù)結(jié)構(gòu)跟Python編程語(yǔ)言的數(shù)據(jù)容器真的好相似。

接下來(lái)我就用一個(gè)真實(shí)的文章網(wǎng)站怎樣使用Redis做下代碼演示,總結(jié)下各種數(shù)據(jù)結(jié)構(gòu)的用法:

  1.  使用Hash存儲(chǔ)文章的(ID、標(biāo)題)數(shù)據(jù);

  2. 使用String存儲(chǔ)每個(gè)文章的訪問(wèn)次數(shù),可以每次加1計(jì)數(shù);

  3. 使用List存儲(chǔ)每個(gè)用戶的訪問(wèn)文章的歷史,按順序記錄;

  4. 使用Set存儲(chǔ)訪問(wèn)網(wǎng)站的所有用戶ID的集合;

  5. 使用Sorted Set存儲(chǔ)網(wǎng)站的熱榜,排序分?jǐn)?shù)就是權(quán)重;

引入redis包

如果沒(méi)有的話,可以用pip install redis安裝。

import redis
# 創(chuàng)建鏈接redis_conn = redis.Redis(    host='192.168.0.119',     port=6379)

1. 給網(wǎng)站新增幾篇文章

# 使用hash,類似map的形式# 存儲(chǔ)(Id、標(biāo)題)數(shù)據(jù)for idx in range(101, 106):    title = f"this is {idx} article title"    redis_conn.hset(      "articles",        str(idx),        title )

2. 給用戶展示文章列表

# 存儲(chǔ)在hash,用hgetall展示所有的文章列表articles = redis_conn.hgetall("articles")for id, title in articles.items():    # 默認(rèn)返回bytes類型    print(id, title)

看下結(jié)果吧:

101 this is 101 article title102 this is 102 article title103 this is 103 article title104 this is 104 article title105 this is 105 article title

也可以查看單個(gè)文章:

# 展示單個(gè)文章的標(biāo)題redis_conn.hget("articles", "105")

結(jié)果為:

b'this is 105 article title'

3. 用戶訪問(wèn)文章則產(chǎn)生行為記錄

# 這個(gè)函數(shù)用到了好多個(gè)數(shù)據(jù)結(jié)構(gòu)def user_visit(uid, article_id):    """產(chǎn)生了行為:uid訪問(wèn)了article_id"""    # 1. String結(jié)構(gòu),文章的訪問(wèn)次數(shù)加1    redis_conn.incr(      f"article_counter_{article_id}")    # 2. List結(jié)構(gòu),記錄uid的訪問(wèn)列表    redis_conn.lpush(      f"user_visit_{uid}", str(article_id))    # 3. Set結(jié)構(gòu),記錄uid的全站集合    redis_conn.sadd(      f"all_visit_uids", str(uid))    # 4. SortedSet結(jié)構(gòu),文章的熱度加1    redis_conn.zincrby(      "article_hots", 1, str(article_id))

模擬一下幾個(gè)用戶的訪問(wèn):

# 模擬3個(gè)用戶的訪問(wèn)記錄user_visit("uid_01", "101")user_visit("uid_01", "102")user_visit("uid_01", "103")
user_visit("uid_02", "102")user_visit("uid_02", "103")user_visit("uid_02", "104")
user_visit("uid_03", "103")user_visit("uid_03", "104")user_visit("uid_03", "105")

4. 查詢文章的訪問(wèn)次數(shù)

因?yàn)榇鎯?chǔ)在String結(jié)構(gòu),直接get即可

redis_conn.get(f"article_counter_104")返回:2
redis_conn.get(f"article_counter_105")返回:1

5. 展示一個(gè)用戶的訪問(wèn)歷史

因?yàn)榇鎯?chǔ)在List,可以用lrange分頁(yè)查詢

redis_conn.lrange(  "user_visit_uid_01", 0, -1)返回:[b'103', b'102', b'101']
redis_conn.lrange(  "user_visit_uid_03", 0, -1)返回:[b'105', b'104', b'103']

6. 展示訪問(wèn)全站的用戶集合

因?yàn)榇鎯?chǔ)在Set,可以用smembers取出所有內(nèi)容

redis_conn.smembers("all_visit_uids")返回:{b'uid_01', b'uid_02', b'uid_03'}

7. 展示文章熱榜以及熱度

redis_conn.zrange(    "article_hots",      0, -1,      withscores=True,      desc=True)     返回如下,其實(shí)就是每個(gè)文章ID和熱度值:[(b'103', 3.0), (b'104', 2.0), (b'102', 2.0), (b'105', 1.0), (b'101', 1.0)]

以上就是我使用Python對(duì)Redis的操作的一個(gè)總結(jié),其中string/list/set/hash大家用的會(huì)比較多sorted set用的比較少,但當(dāng)你遇到熱榜、帶權(quán)重列表等場(chǎng)景時(shí)用sorted set會(huì)很方便。

代碼在github:

https://github.com/peiss/ant-learn-python

看完上述內(nèi)容,你們對(duì)Python中怎樣操作Redis庫(kù)有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

分享題目:Python中怎樣操作Redis庫(kù)
文章鏈接:http://muchs.cn/article38/ghiepp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站收錄外貿(mào)建站、企業(yè)網(wǎng)站制作網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)