Redis封裝
import redis
class MyRedis():
def __init__(self,ip,password,port=6379,db=1):#構造函數
try:
self.r = redis.Redis(host=ip,password=password,port=port,db=db) #連接redis固定方法,這里的值必須固定寫死
except Exception as e:
print('redis連接失敗,錯誤信息%s'%e)
def str_get(self,k):
res = self.r.get(k) #會從服務器傳對應的值過來,性能慢
if res:
return res.decode() #從redis里面拿到的是bytes類型的數據,需要轉換一下
def str_set(self,k,v,time=None): #time默認失效時間
self.r.set(k,v,time)
def delete(self,k):
tag = self.r.exists(k)
#判斷這個key是否存在,相對於get到這個key他只是傳回一個存在火災不存在的信息,
# 而不用將整個k值傳過來(如果k里面存的東西比較多,那么傳輸很耗時)
if tag:
self.r.delete(k)
else:
print('這個key不存在')
def hash_get(self,name,k): #哈希類型存儲的是多層字典(嵌套字典)
res = self.r.hget(name,k)
if res:
return res.decode() #因為get不到值得話也不會報錯所以需要判斷一下
def hash_set(self,name,k,v): #哈希類型的是多層
self.r.hset(name,k,v) #set也不會報錯
def hash_getall(self,name):
res = self.r.hgetall(name) #得到的是字典類型的,里面的k,v都是bytes類型的
data={}
if res:
for k,v in res.items(): #循環取出字典里面的k,v,在進行decode
k = k.decode()
v = v.decode()
data[k]=v
return data
def hash_del(self,name,k):
res = self.r.hdel(name,k)
if res:
print('刪除成功')
return 1
else:
print('刪除失敗,該key不存在')
return 0
@property #屬性方法,
# 使用的時候和變量一個用法就好比實例,A=MyRedis(), A.clean_redis使用,
# 如果不加這個@property,使用時A=MyRedis(), A.clean_redis() 后面需要加這個函數的括號
def clean_redis(self):
self.r.flushdb() #清空 redis
print('清空redis成功!')
return 0
a = MyRedis('118.0000','HK0000*')
print(a.str_get('duan'))
