您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    运用 Python 配合 Redis 超越缓存(3)
    时间:2020-07-13 08:05 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

         'id': id, 'title': title, 'classification': classification }) 

     

     asyncio.run(main()) 


    每个新添加的流事情都有一个独一标识符, 其中包含自 1970 年末尾的时间戳(毫秒)和一个用破折号衔接的序列号。 例如, 当我写这篇文章的时分, 1970 年 1 月 1 日(Unix纪元)午夜曾经过去了 1,593,120,357,193 毫秒(1.59千兆秒)。 因此当我运转下面这段代码的时分, 命令将创立出 ID 为 1593120357193-0 的事情。这段代码中最重要的就是第 17 行和第 18 行, 它运用了 redis.xadd 函数将一次目击事情的字段添加到流外面。

    我们在添加事情的时分可以运用 * 来替代详细的 ID , 这样 Redis 就会依据以后时间来自动生成事情的 ID , 这也是 redis.xadd 函数的默许行为。

    正如接上去的代码所示, 在读取流元素的时分, 我们需求设置一个起始 ID 。 你可以看到, 在第 10 行, 顺序将变量 last_id 设置成了 0-0 , 这个 ID 代表流的起始位置。

    import asyncio 

     import aioredis 

     

     from pprint import pp 

     

     async def main(): 

     

       redis = await aioredis.create_redis('redis://:foobared@localhost:6379/0', encoding='utf8'

     

       last_id = '0-0' 

       while True: 

         events = await redis.xread(['bigfoot:sightings:stream'], timeout=0, count=5, latest_ids=[last_id]) 

         for key, id, fields in events: 

           pp(fields) 

           last_id = id 

     

     asyncio.run(main()) 


    顺序的第 12 行运用 redis.xread 函数从流中央求最多 5 个 0-0 之后的事情。 该调用将前往一个列表, 然后顺序将对其停止循环和解构, 以取得事情的字段和标识符。 事情的标识符会被贮存起来, 以便未来调用 redis.xread 时可以取得新的事情并在有需求时重新读取之前读取过的旧事情

    将 Redis 用作搜索引擎

    Redis 可以经过模块(Module)扩展来添加新的命令和功用。 有 少量的模块 可以用于 AI 模型效劳、图形数据库、时间序列数据库以及本例中的搜索引擎。

    RedisSearch 是一个弱小的搜索引擎, 它摄取数据的速度快得惊人。 有些人喜欢用它来停止 瞬时搜索 , 但除此之外它也可以用来停止其他搜索。 下面是运用该模块的一个例子:

    import asyncio 

    import aioredis 

     

    from pprint import pp 

     

    async def main(): 

     

      redis = await aioredis.create_redis('redis://:foobared@localhost:6379/0', encoding='utf-8'

     

      await redis.execute('FT.DROP''bigfoot:sightings:search'

     

      await redis.execute('FT.CREATE''bigfoot:sightings:search'

        'SCHEMA''title''TEXT''classification''TEXT'

     

      await asyncio.gather( 

        add_document(redis, 1'Possible vocalizations east of Makanda''Class B'), 

    (责任编辑:admin)