新聞中心
pip來(lái)安裝。本節(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í)行以下命令來(lái)安裝:
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(連接池)來(lái)管理 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è)客戶端訪問(wèn) re_pool = redis.Redis(connection_pool=conn_pool) # 第二個(gè)客戶端訪問(wèn) 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
標(biāo)題網(wǎng)址:http://fisionsoft.com.cn/article/dheojpd.html


咨詢
建站咨詢
