redis的實踐

Redis 是一個高性能的key-value數據庫。 redis的出現,很大程度補償了memcached這類key/value存儲的不足,在部 分場合可以對關係數據庫起到很好的補充作用。它提供了Python,Ruby,Erlang,PHP客戶端,本文是python 的客戶端,現在我們直接上代碼來說明其簡單的應用

#!/usr/bin/env python
#encoding:utf-8
import redis
import os
import configparser as cparser
from framework.logger import Logger
import time

#========讀取config.ini文件中redis配置========
base_dir = str(os.path.dirname(os.path.dirname(file)))
file_path = base_dir + r"\config\config.ini"
cf = cparser.ConfigParser()
cf.read(file_path)
host = cf.get("sitredisconf", "host")
port = cf.get("sitredisconf", 'port')
logger = Logger(logger="redisUtils").getlog()

print(host,port)

===========封裝redis基本操作=============

class redisUtils:

def __init__(self,host,port):
    try:
        self.pool = redis.ConnectionPool(host=host, port=port,db=0)
        self.conn = redis.Redis(connection_pool=self.pool)
    except redis.ConnectionError as e:
        logger.exception('Connected failed:%s'%e)

def set(self,key,value):
    self.conn.set(key, value)

def get(self,key):
    pipe = self.conn.pipeline(transaction=True)
    return self.conn.get(key)
    pipe.execute()

def delete(self,key):
    return self.conn.delete(key)

def isKeyExists(self,name):
    '''判斷key是否存在'''
    return self.conn.exists(name)

def bitcount(self,key):
    return self.conn.bitcount(key)

def get_value(self,Key):
    '''60秒拿特定key的值'''
    # redisValue = {}
    seconds = 60
    count = 0
    while (count < seconds):
        count += 1
        n = seconds - count
        logger.info('remain %s seconds' % n)
        time.sleep(1)
        redisValue = self.get(Key.strip())
        if redisValue:
            break
    if redisValue:
        logger.info('此規則的key爲:%s,值爲: %s' % (Key, redisValue))
    else:
        logger.exception('此規則的key爲:%s,值爲: %s' % (Key, redisValue))
    return redisValue

if name == 'main':

r = redisUtils(host,port)
key = '7b6a99f3bce14915863cde5104bdf2c3_null_DD_AMT_d27c6b10ad1f4c48898_20171212'

r.get_value(key)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章