標籤:分享 訪問 封裝 put python 雜湊 main 客戶 val
1.python操作redis1.1.安裝
輸入命令:
pip install redis
2.2.使用
引入模組import redis 串連try: r=redis.StrictRedis(host=‘localhost‘,port=6379) except Exception,e: print e.message 方式一:根據資料類型的不同,調用相應的方法,完成讀寫更多方法同上邊寫的命令r.set(‘name‘,‘hello‘) r.get(‘name’) 方式二:pipline緩衝多條命令,然後一次性執行,減少伺服器-用戶端之間TCP資料庫包,從而提高效率pipe = r.pipeline() pipe.set(‘name‘, ‘world‘) pipe.get(‘name‘) pipe.execute()
#串連redis伺服器部分是一致的#這裡將string類型的讀寫進行封裝import redis class RedisHelper(): def __init__(self,host=‘localhost‘,port=6379): self.__redis = redis.StrictRedis(host, port) def get(self,key): if self.__redis.exists(key): return self.__redis.get(key) else: return "" def set(self,key,value): self.__redis.set(key,value)
2.執行個體
#coding=utf-8 import redis class CRedis: def __init__(self): self.host = ‘localhost‘ self.port = 6379 self.db = 0 self.r = redis.Redis(host = self.host, port = self.port, db = self.db) #1. strings 類型及操作 #設定 key 對應的值為 string 類型的 value def set(self, key, value): return self.r.set(key, value) #設定 key 對應的值為 string 類型的 value。如果 key 已經存在,返回 0,nx 是 not exist 的意思 def setnx(self, key, value): return self.r.setnx(key, value) #設定 key 對應的值為 string 類型的 value,並指定此索引值對應的有效期間 def setex(self, key, time, value): return self.r.setex(key, time, value) #設定指定 key 的 value 值的子字串 #setrange name 8 gmail.com #其中的 8 是指從下標為 8(包含 8)的字元開始替換 def setrange(self, key, num, value): return self.r.setrange(key, num, value) #擷取指定 key 的 value 值的子字串 def getrange(self, key, start ,end): return self.r.getrange(key, start, end) #mget(list) def get(self, key): if isinstance(key, list): return self.r.mget(key) else: return self.r.get(key) #刪除 def remove(self, key): return self.r.delete(key) #自增 def incr(self, key, default = 1): if (1 == default): return self.r.incr(key) else: return self.r.incr(key, default) #自減 def decr(self, key, default = 1): if (1 == default): return self.r.decr(key) else: return self.r.decr(key, default) #2. hashes 類型及操作 #根據email擷取session資訊 def hget(self, email): return self.r.hget(‘session‘, email) #以email作為唯一標識,增加使用者session def hset(self, email, content): return self.r.hset(‘session‘, email, content) #擷取session雜湊表中的所有資料 def hgetall(self): return self.r.hgetall(‘session‘) #刪除hashes def hdel(self, name, key = None): if(key): return self.r.hdel(name, key) return self.r.hdel(name) #清空當前db def clear(self): return self.r.flushdb() #3、lists 類型及操作 #適合做郵件隊列 #在 key 對應 list 的頭部添加字串元素 def lpush(self, key ,value): return self.r.lpush(key, value) #從 list 的尾部刪除元素,並返回刪除元素 def lpop(self, key): return self.r.plush(key) if __name__ == ‘__main__‘: r = CRedis()
3.Redis緩衝Mysql類比使用者登入,Python實現執行個體
1 .使用者登入首先判斷是否在redis緩衝中,如果在redis緩衝中,直接登入成功;
2 .若使用者未在redis緩衝,則訪問Mysql,判斷使用者是否存在,如果不存在,則提示使用者註冊;如果存在,則登入成功;
3 .在Mysql存在並登入成功的同時,將改條資料用Redis Hash類型進行緩衝,並設定到期時間為20分鐘;
# -*- coding:utf-8 -*-import redisclass Redis_login(): def __init__(self,user,pwd): r.mset(guoyan=‘123‘,lixiang=‘1234‘,shengli=‘12345‘) def login(self): ls = [] for key in r.keys(): ls.append(key.decode(‘utf-8‘)) if user not in ls: print(‘使用者名稱錯誤請重新輸入‘) elif r.get(user).decode(‘utf-8‘) == pwd: print(‘登入成功!!!‘) else: red.not_login() def not_login(self): print(‘輸入錯誤請重新輸入‘)if __name__ == ‘__main__‘: pool = redis.ConnectionPool(host=‘127.0.0.1‘, port=6379) r = redis.Redis(connection_pool=pool) while True: user = raw_input(‘請輸入使用者名稱\n‘) pwd = raw_input(‘請輸入密碼\n‘) red = Redis_login(user,pwd) red.login()
Python操作redis