python操作Redis增、删、改、查,独立版本

文摘   科技   2023-07-06 16:15   北京  



是我,是你


余生很贵,做最好的自己




回顾上篇



python发送邮件

九月de云,公众号:九月de云python制作发送各类内容的邮件,并设置定时自动触发,独立封装



开始本篇


Redis(Remote Dictionary Server)是一个开源的内存数据存储系统,它提供了键值对的存储方式。Redis支持多种数据结构,如字符串(String)、列表(List)、集合(Set)、哈希(Hash)、有序集合(Sorted Set)等。

Redis以高性能、可扩展性和灵活性而闻名。它将数据存储在内存中,以提供快速的读写操作,并通过持久化机制将数据写入磁盘,以防止数据丢失。Redis还提供了许多功能,如事务、发布订阅、Lua脚本执行等。

由于其高性能和多功能性,Redis广泛应用于缓存、消息队列、计数器、实时排行榜、会话存储等场景。它支持多种编程语言的客户端,包括Python、Java、C#等,因此可以方便地与各种应用程序集成。

本次介绍一下Python操作Redis,首先得安装Redis包,它是一个用于与Redis数据库进行交互的Python库。它提供了一组功能丰富的API,使得在Python中使用Redis变得非常方便。


环境:

Pycharm

Python 3.9.16



安装:

pip install redis==4.6.0




创建Redis连接池


在Python中使用Redis连接池可以提高Redis的性能和效率,使用连接池可以更好地管理连接,减少网络开销和连接的建立时间。

pool = redis.ConnectionPool(host='localhost',
port=6379,
db=0,
max_connections=10,
decode_responses=True)




创建Redis连接对象


rd = redis.Redis(connection_pool=pool)


如果不使用连接池,则可以直接创建连接:

rd = redis.Redis(host='localhost', 
port=6379,
db=0,
decode_responses=True)




释放连接对象


在Redis中,通过del释放连接对象,将连接返回到连接池(下次再操作Redis的时候,需要重新创建连接对象

del rd




添加键值对


添加操作,可以添加单个键值对 和 添加多个键值

添加单个键值对

rd.set('key1', 'value1')


结果:



添加多个键值对

rd.mset({'key2': 'value2', 'key3': 'value3', 'key4': 'value4'})


结果:



删除键值对


删除操作,可以单键删除 和 多键删除,当键值不存在时不会引发错误,只是简单地忽略不存在的键。

需要注意,删除操作要小心,因为它会直接从Redis中删除数据,无法恢复

删除单个键值对

rd.delete('key1')



删除多个键值对

rd.delete(['key1', 'key2'])




查询键值对


查询操作,可以获取单个键的值、获取多个键的值和获取库中所有的键,当键值不存在时不会引发错误,获取结果会返回None。

获取单个键的值

result = rd.get('key1')

print(result)


结果:

value1


获取多个键的值

result = rd.mget(['key1', 'key2', 'key3'])

print(result)


结果:

['value1', 'value2', 'value3']


获取当前库中所有的键

result = rd.keys()

print(result)


结果:

['key2', 'key3', 'key1', 'key4']





总结


以上操作中没有更新,其实在Redis中,添加键值对 操作,如果键存在,即为更新,如果键不存在,则为添加

为使用方便,将Redis操作进行了简单的封装,如下:

# -*- coding: utf-8 -*-import redis
class redis_tool: def __init__(self, host='localhost', port=6379, db=0, decode_responses=True): """ 建立连接 :param host: 地址 :param port: 端口 :param db: 库 :param decode_responses: 是否将获取到的数据以字符串形式返回,默认为False,字节形式;为True时,获取到的数据会自动以字符串形式返回 """ self.host = host self.port = port self.db = db # 创建Redis连接池 self.pool = redis.ConnectionPool(host='localhost', port=6379, db=db, max_connections=10, decode_responses=decode_responses) # 创建Redis连接对象 self.rd = redis.Redis(connection_pool=self.pool)

def close_conn(self): """ 释放连接对象,将连接返回到连接池(下次再操作Redis的时候,需要重新创建连接对象) :return: """ del self.rd
def set_value(self, key, value): """ # 添加单个键值对 :param key: 键 :param value: 值 :return: """ self.rd.set(key, value) self.rd.close()
def set_values(self, data: dict): """ # 添加多个键值对 :param data: 数据,是个字典 :return: """ self.rd.mset(data) self.rd.close()
def get_value(self, key): """ # 获取单个键的值 :param key: 键 :return: """ result = self.rd.get(key) self.rd.close() return result
def get_values(self, keys: list): """ # 获取多个键的值 :param keys: 键,是一个list :return: 返回值也是个list """ result = self.rd.mget(keys) self.rd.close() return result
def get_keys(self): """ # 获取库中所有的键 :return: 返回值是个list """ result = self.rd.keys() self.rd.close() return result
def delete(self, key): """ # 删除 :param key: 键,如果删除多个键,就组成一个list :return: """ if isinstance(key, list): self.rd.delete(*key) else: self.rd.delete(key) self.rd.close()




     

文章就分享到这儿,喜欢就点个吧!




推荐阅读  点击标题可跳转



ISEE小栈
没有花里胡哨,简单才是王道。
 最新文章