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')(代码片段