日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Python使用Redis
python 使用 Redis 相對(duì)比較簡(jiǎn)單,Python 專門提供了操作 Redis 的第三方模塊,即 redis 模塊,該模塊可以直接使用 Python 包管理工具
pip來安裝。本節(jié)內(nèi)容適合 Python 開發(fā)人員閱讀。

成都創(chuàng)新互聯(lián)公司長(zhǎng)期為數(shù)千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為松嶺企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站制作松嶺網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

安裝redis模塊

下面以 Windows 系統(tǒng)為例,使用包管理工具安裝 redis 模塊,命令如下:

python -m pip install redis

如果您是 Linux 系統(tǒng),需要執(zhí)行以下命令來安裝:

sudo pip3 install redis

Python Redis連接

redis 模塊采用了兩種連接模式:直接模式和連接池模式,它們都可以操作 Redis。

1) 直連模式

import redis

# 本地連接,創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)象
r = redis.Redis(host='127.0.0.1',port=6379,db=0,password='123456')

上述代碼中,db 表示當(dāng)前選擇的庫(kù),其參數(shù)值可以是 0-15;如果設(shè)置連接數(shù)據(jù)庫(kù)的密碼,那么就需要使用 password 進(jìn)行驗(yàn)證,否則可以省略。

2) 連接池模式

redis 模塊使用 connection pool(連接池)來管理 redis server 的所有連接,每個(gè) Redis 實(shí)例都會(huì)維護(hù)一個(gè)屬于自己的連接池,這樣做的目的是為了減少每次連接或斷開的性能消耗。

下面示例,實(shí)現(xiàn)了多個(gè) Redis 實(shí)例共享一個(gè)連接池,代碼如下:

import redis

#創(chuàng)建連接池并連接到redis,并設(shè)置最大連接數(shù)量;
conn_pool = redis.ConnectionPool(host='127.0.0.1',port=6379,max_connections=10)
# 第一個(gè)客戶端訪問
re_pool = redis.Redis(connection_pool=conn_pool)
# 第二個(gè)客戶端訪問
re_pool2 = redis.Redis(connection_pool=conn_pool)
...

連接池的作用:當(dāng)有新的客戶端請(qǐng)求連接時(shí),只需要去連接池獲取一個(gè)連接即可,實(shí)際上就是把一個(gè)連接共享給多個(gè)客戶端使用,這樣就節(jié)省了每次連接所耗費(fèi)的時(shí)間。

Python Redis通用操作

下面是 Python 操作 Redis 數(shù)據(jù)庫(kù)的通用命令。

import redis

r = redis.Redis(host='127.0.0.1',port=6379,db=0)
print(r.keys('*'))
key_list = r.keys('*')
#轉(zhuǎn)換為字符串
for key in key_list:
  print(key.decode())
#查看key類型
print(r.type('webname'))
# 返回值: 0 或者 1
print(r.exists('username'))
# 刪除key
r.delete('webname')
if "age"  in key_list:
    print("刪除失敗")
else:
    print("刪除成功")

輸出結(jié)果:

[b'username', b'webname', b'age', b'password']
username
webname
age
password
b'string'
1
刪除成功

Python Redis字符串

示例如下:

import redis

#連接redis服務(wù)器
r = redis.Redis(host='127.0.0.1',port=6379,db=0)
?#key為database
r.set('webname','www.biancheng.net')
print(r.get('webname'))
#mset參數(shù)為字典
r.mset({'username':'jacak','password':'123'})
print(r.mget('username','password'))
#查看value長(zhǎng)度
print(r.strlen('username'))
?
#數(shù)值操作
r.set('age','15')
r.incrby('age',5)
r.decrby('age',5)
r.incr('age')
r.decr('age')
r.incrbyfloat('age',5.2)
r.incrbyfloat('age',-10.5)
print(r.get('age'))
?#刪除key
r.delete('username')

輸出結(jié)果如下:

b'www.biancheng.net'
[b'jacak', b'123']
5
b'9.69999999999999929'

注意:輸出結(jié)果為 bytes 形式,需要使用 decode() 方法進(jìn)行轉(zhuǎn)換。

Python Redis列表

示例如下:

import redis

#建立redis連接
r = redis.Redis(host='127.0.0.1',port=6379,db=0)

r.lpush('database','sql','mysql','redis')
r.linsert('database','before','mysql',',mongodb')
print(r.llen('database'))
print(r.lrange('database',0,-1))
print(r.rpop('database'))
#保留指定區(qū)間內(nèi)元素,返回True
print(r.ltrim('database',0,1))
while True:
  # 如果列表中為空時(shí),則返回None
  result = r.brpop('database',1)
  if result:
      print(result)
  else:
      break
r.delete('database')

輸出結(jié)果如下:

4
[b'redis', b',mongodb', b'mysql', b'sql']
b'sql'
True
(b'database', b',mongodb')
(b'database', b'redis')

Python Redis散列

Python 操作 Hash 散列常用方法如下:

# 1、更新一條數(shù)據(jù)的value,若不存在時(shí),則新建這條數(shù)據(jù)
hset(key, field, value)
# 2、讀取數(shù)據(jù)的指定字段屬性,返回值為字符串類型
hget(key, field)
# 3、批量更新字段屬性,參數(shù)mapping為字典類型
hmset(key, mapping)
# 4、批量讀取數(shù)據(jù)的字段屬性
hmget(key, fields)
# 5、獲取這條數(shù)據(jù)的所有屬性字段和對(duì)應(yīng)的值,返回值為字典類型
hgetall(key)
# 6、獲取這條數(shù)據(jù)的所有屬性字段,返回值為列表類型
hkeys(key)
# 7、刪除這條數(shù)據(jù)的指定字段
hdel(key, field)

命令演示:

import redis

r = redis.Redis(host='127.0.0.1',port=6379,db=0)
# 設(shè)置一條數(shù)據(jù)
r.hset('user1','name','www.baidu.com')
# 更新數(shù)據(jù)
r.hset('user1','name','www.biancheng.net')
# 獲取數(shù)據(jù)
print(r.hget('user1','name'))
# 一次性設(shè)置多個(gè)field和value
user_dict = {
  'password':'123',
  'gender':'M',
  'height':'175cm'
}
r.hmset('user1',user_dict)
# 獲取所有數(shù)據(jù),字典類型
print(r.hgetall('user1'))
# 獲取所有fields字段和所有values值
print(r.hkeys('user1'))
print(r.hvals('user1'))

輸出結(jié)果:

b'www.biancheng.net'
{b'name': b'www.biancheng.net', b'password': b'123', b'gender': b'M', b'height': b'175cm'}
[b'name', b'password', b'gender', b'height']
[b'www.biancheng.net', b'123', b'M', b'175cm']

Python Redis集合

Python 操作 Set 集合常用方法如下:

#1、給name對(duì)應(yīng)的集合中添加元素
sadd(name,values)
e.g.
r.sadd("set_name","tom")
r.sadd("set_name","tom","jim")
?
#2、獲取name對(duì)應(yīng)的集合的所有成員
smembers(name)
e.g.
r.smembers('set_name')
?
#3、獲取name對(duì)應(yīng)的集合中的元素個(gè)數(shù)
scard(name)
e.g.
r.scard("set_name")
?
#4、檢查value是否是name對(duì)應(yīng)的集合內(nèi)的元素,返回值為True或False
sismember(name, value)
e.g.
r.sismember('set_name','tom')
?
#5、隨機(jī)刪除并返回指定集合的一個(gè)元素
spop(name)
e.g.
member = r.spop('set_name')
?
#6、刪除集合中的某個(gè)元素
srem(name, value)
r.srem("set_name", "tom")
?
#7、獲取多個(gè)name對(duì)應(yīng)集合的交集
sinter(keys, *args)
e.g.?
r.sadd("set_name","a","b")
r.sadd("set_name1","b","c")
r.sadd("set_name2","b","c","d")
?
print(r.sinter("set_name","set_name1","set_name2"))
#輸出:{b'b'}
?
#8、獲取多個(gè)name對(duì)應(yīng)的集合的并集
sunion(keys, *args)
e.g.
r.sunion("set_name","set_name1","set_name2")

文章標(biāo)題:Python使用Redis
文章鏈接:http://www.dlmjj.cn/article/dheojpd.html