前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用aioredis操作列表对象:插入、批量插入和数据检索

使用aioredis操作列表对象:插入、批量插入和数据检索

作者头像
不止于python
发布2023-11-15 15:55:37
3700
发布2023-11-15 15:55:37
举报
文章被收录于专栏:不止于python不止于python

哈哈哈~~~

这篇文章只讲如何使用aioredis操作列表和列表的基本属性。

redis列表可以应用于代理池等功能上。

最后将代码封装一下, 随便学一下封装方法, 写的多了, 慢慢就熟练了

插入单个元素

将字符串 'element1' 插入到 Redis 列表 my_list 的左侧。

代码语言:javascript
复制
# -*- coding: utf-8 -*-
# @Author: Mehaei
# @Date:   2023-11-11 17:40:14
# @Last Modified by:   Mehaei
# @Last Modified time: 2023-11-11 17:43:13
import asyncio
import aioredis
async def insert_single_element():
    """
    插入单个元素
    """
    redis = await aioredis.from_url('redis://localhost')
    await redis.lpush('my_list', 'element1')
    await redis.close()

批量插入多个元素

有的时候会批量插入,这个示例将列表 elements 中的多个元素一次性插入到 Redis 列表my_list的左侧。

代码语言:javascript
复制
async def insert_multiple_elements():
    """
    插入多个元素
    """
    redis = await aioredis.from_url('redis://localhost')
    elements = ['element1', 'element2', 'element3']
    await redis.lpush('my_list', *elements)
    await redis.close()

获取数据并转换为字符串

要检索 Redis 列表中的数据并将其转换为字符串,您可以使用 lrange 方法和 Python 的 str() 函数。这个示例使用 lrange 获取 Redis 列表 my_list 中的所有元素,然后将它们转换为字符串并打印出来。:

代码语言:javascript
复制
async def retrieve_and_convert():
    """
    取出多个元素
    """
    redis = await aioredis.from_url('redis://localhost')
    # 按元素索引获取
    result = await redis.lrange('my_list', 0, -1)
    await redis.close()
    # 将结果列表转换为字符串
    result_as_strings = [str(item, 'utf-8') for item in result]
    print(result_as_strings)

使用

代码语言:javascript
复制
# 使用异步事件循环执行插入操作
loop = asyncio.get_event_loop()
# loop.run_until_complete(insert_single_element())
# loop.run_until_complete(insert_multiple_elements())
loop.run_until_complete(retrieve_and_convert())

封装一下

简单封装一下, 主要是学思路和方法, 后续需要什么属性, 可以再加。代码中有注释, 这里就不多做解释了,今天又完了!!!

代码语言:javascript
复制
# -*- coding: utf-8 -*-
# @Author: Mehaei
# @Date:   2023-11-11 15:05:11
# @Last Modified by:   Mehaei
# @Last Modified time: 2023-11-11 18:15:57
import asyncio
import aioredis


class RedisArray(object):
    def __init__(self, url="redis://localhost", kname="my_list"):
        """
        :param url: redis url
        :param kname: list name
        """
        self.url = url
        self.kname = kname

    async def create_pool(self):
        """
        创建连接池
        """
        self.aioClient = await aioredis.from_url('redis://localhost')

    async def lpush(self, kvalue):
        """
        往列表左边, 也就是头部插入元素
        :param kvalue: element value
        """
        try:
            return await self.aioClient.lpush(self.kname, kvalue)
        except Exception as e:
            print(f"lpush 插入: {self.kname}/{kvalue}报错: {str(e)}")
            return None

    async def rpush(self, kvalue):
        """
        往列表右边, 也就是尾部插入元素
        :param kvalue: element value
        """
        try:
            return await self.aioClient.rpush(self.kname, kvalue)
        except Exception as e:
            print(f"rpush 插入: {self.kname}/{kvalue}报错: {str(e)}")
            return None

    async def get(self, start=0, end=-1):
        """
        获取元素
        :param start: element start index
        :param end: element end index
        """
        try:
            result = await self.aioClient.lrange(self.kname, 0, -1)
            result = [str(item, 'utf-8') for item in result]

            print(result)
            return result
        except Exception as e:
            print(f"读取: {self.kname}/{start}/{end}错误: {str(e)}")
            return []

    async def close(self):
        """
        关闭redis连接
        """
        await self.aioClient.close()


async def main():
    # 使用异步事件循环执行插入操作
    RA = RedisArray()
    await RA.create_pool()
    await RA.lpush("test22")
    await RA.rpush("test23")
    await RA.get()
    await RA.close()

loop = asyncio.get_event_loop()
loop.run_until_complete(main())
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 不止于python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 哈哈哈~~~
  • 插入单个元素
  • 批量插入多个元素
  • 获取数据并转换为字符串
  • 使用
  • 封装一下
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档