python操作Redisl数据库

Posted AustinJoe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python操作Redisl数据库相关的知识,希望对你有一定的参考价值。

安装

用pip命令来安装操作Redis的库。

pip install redis

操作

import  redis

在python中操作Redis数据库是十分简单的,命令与Linux下操作redis数据库的命令几乎一模一样。不熟悉可以看redis基本命令。

连接

连接命令有两种第一种是为了兼容旧的版本,推荐使用第二种。连接的时候默认连接的是0号数据库。decode_responses=True可以让数据不以bytes显示。

第一种

redis.Redis()

第二种

redis.StrictRedis()
#redis.StrictRedis(decode_responses=True)

操作示例

redis操作list类型数据。

import redis
class RedisList:
    def __init__(self,key,host=\'localhost\',port=6379):
        self.db=redis.StrictRedis(host=host,port=port,decode_responses=True)
        self.key=key
    def name(self):
        return self.key
    def rpush(self,*args):
        self.db.rpush(self.name(),*args)
    def lpush(self,*args):
        self.db.lpush(self.name(),*args)
    def lrange(self,start,stop):
        print( self.db.lrange(self.name(),start,stop))
    def lindex(self,index):
        print(self.db.lindex(self.name(),index))
    def lset(self,index,value):
        self.db.lset(self.name(),index,value)
    def rpop(self):
        self.db.rpop(self.name())
    def lpop(self):
        self.db.lpop(self.name())


if __name__==\'__main__\':
    li1=RedisList(\'list\')
    li1.rpush(111,222,333)
    li1.lpush(999,888)
    li1.lrange(1,3)
    li1.lindex(2)
    li1.lset(2,777)
    li1.lindex(2)
    li1.rpop()
    li1.lpop()

 python操作hash数据类型

import redis
import random


class RedisClient(object):
    def __init__(self, key, host=\'localhost\', port=6379):
        """
        初始化Redis连接
        :param host: 地址
        :param port: 端口
        """
        self._db = redis.StrictRedis(host=host, port=port, decode_responses=True)
        self.key = key

    def name(self):
        """
        获取Hash的名称
        :return: Hash名称
        """
        return self.key

    def hmset(self, dic):
        self._db.hmset(self.name(), dic)

    def set(self, field, value):
        """
        设置键值对
        :param field: 键
        :param value: 值
        :return:
        """
        return self._db.hset(self.name(), field, value)

    def delete(self, *field):
        """
        根据键名删除键值对
        :return: 删除结果
        """
        return self._db.hdel(self.name(), *field)

    def count(self):
        """
        获取数目
        :return: 数目
        """
        return self._db.hlen(self.name())

    def random(self):
        """
        随机得到键值
        :return: 随机键值
        """
        # print(self._db.hvals(self.key))
        return random.choice(self._db.hvals(self.name()))

    def get_field(self):
        """
        获取所有账户信息
        :return: 所有用户名
        """
        return self._db.hkeys(self.name())

    def get_values(self, *field):
        """
        根据键名获取键值
        :param username: 键
        :return:对应键的键值
        """
        result = self._db.hmget(self.name(), *field)

        return result[0] if len(result) == 1 else result

    def get_all(self):
        """
        获取所有键值对
        :return: 所有键值对
        """
        return self._db.hgetall(self.name())


if __name__ == \'__main__\':
    conn = RedisClient(\'table\')
    result = conn.hmset({\'a\': 1, \'b\': 2, \'c\': 3})
    print(result)
    print(conn.get_field())

 

以上是关于python操作Redisl数据库的主要内容,如果未能解决你的问题,请参考以下文章

python 用于数据探索的Python代码片段(例如,在数据科学项目中)

[未解决问题记录]python asyncio+aiohttp出现Exception ignored:RuntimeError('Event loop is closed')(代码片段

常用python日期日志获取内容循环的代码片段

python 有用的Python代码片段

Python 向 Postman 请求代码片段

Python - 循环加速 - 大型数据集