小編給大家分享一下Python操作redis使用連接池的方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供和平網(wǎng)站建設(shè)、和平做網(wǎng)站、和平網(wǎng)站設(shè)計、和平網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、和平企業(yè)網(wǎng)站模板建站服務(wù),10余年和平做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
redis 連接池
redis是一個key-value存儲系統(tǒng),和memcached類似,支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set-有序集合)和hash(哈希類型)。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集和差集及更豐富的操作,而且這些操作都說原子性的。在此基礎(chǔ)上,redis支持各種不同的方式排序。與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實現(xiàn)了master-slave(主從)同步。
python 操作redis,未使用連接池:
redis-py提供兩個Redis和StrictRedis用于實現(xiàn)Redis的命令,StrictRedis用于實現(xiàn)大部分官方的命令,并使用官方的語法和命令,Redis是StrictRedis的子類,用于向后兼容舊版本的redis-py。
import redis db = 0 #連接redis,password不簡寫(否則或報錯),db若不寫,則默認(rèn)操作db0 conn_redis = redis.Redis(host='127.0.0.1', port=6379, password='123456', db=db) #給redis添加值,傳值方式是key-value,key不可重復(fù),value的形式盡量是string,也可以傳list、字典,redis內(nèi)存放的是字節(jié)res = conn_redis.set('name', 'testredis') #print(res) #返回值是布爾類型,set成功,則返回true conn_redis.set('days', '[10,4,5,12,44]') #set key值到redis內(nèi),且可以設(shè)置過期時間,10s result = conn_redis.setex('session', 'abcder1233@sdfrr', 10) #單位是s print(result) #返回值是布爾類型,set成功,則返回true #批量插入redis,可以寫入多個key-valye conn_redis.mset(a='xiaohei', b='xiaobai', c='xiaohuang') #設(shè)置key時,可以設(shè)置文件夾,user文件夾,key:test,value:haha conn_redis.set('user:test','haha')
python 操作redis,使用連接池:
redis-py使用connection pool來管理對一個redis server的所有連接,避免每次建立、釋放連接的開銷。默認(rèn),每個Redis實例都會維護(hù)一個自己的連接池??梢灾苯咏⒁粋€連接池,然后作為參數(shù)Redis,這樣就可以實現(xiàn)多個Redis實例共享一個連接池。
def getcoon(): pool = redis.ConnectionPool(host='192.168.1.112', port=6379, password='123456', db=0) coon = redis.Redis(connection_pool=pool) coon.set('key', 'value') res = coon.get('key') return res
redis 使用連接池操作
class OPRedis(object): def __init__(self): if not hasattr(OPRedis, 'pool'): OPRedis.getRedisCoon() #創(chuàng)建redis連接 self.coon = redis.Redis(connection_pool=OPRedis.pool) @staticmethod def getRedisCoon(): OPRedis.pool = redis.ConnectionPool(host=redisInfo['host'], password=redisInfo['password'], port=redisInfo['port'], db=redisInfo['db']) """ string類型 {'key':'value'} redis操作 """ def setredis(self, key, value, time=None): #非空即真非0即真 if time: res = self.coon.setex(key, value, time) else: res = self.coon.set(key, value) return res def getRedis(self, key): res = self.coon.get(key).decode() return res def delRedis(self, key): res = self.coon.delete(key) return res """ hash類型,{'name':{'key':'value'}} redis操作 """ def setHashRedis(self, name, key, value): res = self.coon.hset(name, key, value) return res def getHashRedis(self, name, key=None): # 判斷key是否我為空,不為空,獲取指定name內(nèi)的某個key的value; 為空則獲取name對應(yīng)的所有value if key: res = self.coon.hget(name, key) else: res = self.coon.hgetall(name) return res def delHashRedis(self, name, key=None): if key: res = self.coon.hdel(name, key) else: res = self.coon.delete(name) return res
redisInfo配置
redisInfo = { "host": '192.168.1.112', "password": '123456', "port": 6379, "db": 0 }
創(chuàng)建test,測試redis連接
if __name__ == '__main__': opr = OPRedis() res = opr.setredis('two', '哈哈') res = opr.getRedis('two') print(res)
以上是Python操作redis使用連接池的方法的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!