2020 Python 3.8 操作 redis 實戰

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import redis

class RedisBase:

    def __new__(cls, *args, **kwargs):
        """單例模式"""
        if not hasattr(cls, "instance"):
            cls.instance = super(RedisBase, cls).__new__(cls, *args, **kwargs)
        return cls.instance

    def __init__(self):
        """每一個數據庫實例管理一個連接池"""
        pool = redis.ConnectionPool(host='47.96.67.0',port=6379,db=0,password='',decode_responses=True)
        self.r=redis.Redis(connection_pool=pool)

class RedisString(RedisBase):

    def set(self,k,v):
        """設置值"""
        result=self.r.set(k,v)
        return result

    def get(self,k):
        """獲取值"""
        result=self.r.get(k)
        return result

    def mset(self,dmap):
        """設置多個鍵值對"""
        result=self.r.mset(dmap)
        return result

    def mget(self,listKey):
        """獲取多個值"""
        result=self.r.mget(listKey)
        return result

    def delete(self,k):
        """刪除鍵值"""
        result=self.r.delete(k)
        return result

    def incr(self,k,v):
        """原有的value上,累加"""
        result=self.r.incr(k,v)
        return result

class RedisList(RedisBase):

    def lpush(self,k,list):
        result=self.r.lpush(
            k,*list
        )
        return result

    def lpop(self,k):
        """移除最左邊的數據並返回"""
        result=self.r.lpop(k)
        return result

    def lrange(self,k):
        """獲取指定長度的數據"""
        result=self.r.lrange(k,0,-1)
        return result

class RedisSet(RedisBase):

    def sadd(self,k,list):
        """添加集合,返回的是成員的個數"""
        result=self.r.sadd(k,*list)
        return result

    def sismember(self,k,listV):
        """判斷一個成員是否是集合的成員,返回布爾值"""
        result=self.r.sismember(k,listV)
        return result

    def sgetList(self,k):
        """返回集合的所有成員"""
        result=self.r.smembers(k)
        return result

    def sdiff(self,k1,k2):
        """返回與其它集合的差異元素"""
        result=self.r.sdiff(k1,k2)
        return result

    def sinder(self,k1,k2):
        """返回幾個集合的交集"""
        result=self.r.sinter(k1,k2)
        return result

    def sunion(self,k1,k2):
        """返回幾個集合的並集"""
        result=self.r.sunion(k1,k2)
        return result

class RedisHash(RedisBase):

    def hmset(self,name,dmap):
        result = self.r.hmset(name,dmap)
        return result



def mainRedisString():
    rs=RedisString()
    print(rs)
    #1.設置redis字符串 key,value
    print(rs.set("key","value"))

    #2.取值
    print(rs.get("key"))

    #3.存redis 字典map值
    damp = {"key1":"1","key2":"123441213"}
    print(rs.mset(damp))

    #4.取redis多個key
    list = ["key1","key2"]
    print(rs.mget(list))

    #5.刪除redis key
    #print(rs.delete("key1"))

    #6.累加
    print(rs.incr("key1",1))

def mainRedisList():
    sl = RedisList()
    print(sl)
    #1.累加添加集合
    list = [1,2,3,4,5,6]
    print(sl.lpush("list",list))

    #2.取出key中的集合
    #print(sl.lpop("list"))

    #3.取出所有集合數據
    print(sl.lrange("list"))

def mainRedisSet():
    rs = RedisSet()
    print(rs)
    #1.添加set  list
    list = [123,122,123,111,233,455,6,11,213123]
    #print(rs.sadd("set2",list))

    #2.查看set 集合中值是否存在
    #print(rs.sismember("set1",111))

    #3.獲取set 集合中所有成員
    #print(rs.sgetList("set1"))

    #4.
    #print(rs.sdiff("set1","set2"))
    #print(rs.sinder("set1","set2"))
    #print(rs.sunion("set1","set2"))

def mainRedisHash():
    sh = RedisHash()
    print(sh)
    #1.hash 存放map
    dmap = {"key1":"1234","key2":"1231","key3":"123" }
    #print(sh.hmset("hash123",dmap))



if __name__ == '__main__':
    #mainRedisString()
    #mainRedisList()
    #mainRedisSet()
    mainRedisHash()



 

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