首页 > 数据库 >Pottery:简化 redis 操作

Pottery:简化 redis 操作

时间:2024-05-07 14:49:11浏览次数:13  
标签:Pottery ... tel Redis redis 简化 jack

Pottery 是基于 Redis 的高级键值存储解决方案,提供了一系列简单易用的 API 来操作 Redis 数据库。这个库特别适合需要快速开发分布式应用或需要利用 Redis 强大功能的开发者。它简化了许多复杂的操作,使得开发者可以更加专注于业务逻辑的实现。
Pottery:简化%20redis%20操作-0
图源网络

特点

  • 易用性
    • 提供了高级的抽象,让操作 Redis 变得更加直观和简单。
  • 功能丰富
    • 除了基础的键值存储功能,还包括布隆过滤器、限速器等高级功能。
  • 性能优异
    • 基于 Redis,继承了 Redis 本身的高性能特性,适合构建高性能的应用。

最佳实践

安装方法

首先,确保你的环境中已安装 Redis,并运行中。然后通过 pip 安装 Pottery:

pip install pottery

功能一:简化的 Redis 访问

Pottery 让访问 Redis 变得异常简单。例如,使用 RedisDict 可以让 Redis 的键值对操作就像操作 Python 字典一样。

>>> from pottery import RedisDict
>>> tel = RedisDict({'jack': 4098, 'sape': 4139}, redis=redis, key='tel')
>>> tel['guido'] = 4127
>>> tel
RedisDict{'jack': 4098, 'sape': 4139, 'guido': 4127}
>>> tel['jack']
4098
>>> del tel['sape']
>>> tel['irv'] = 4127
>>> tel
RedisDict{'jack': 4098, 'guido': 4127, 'irv': 4127}
>>> list(tel)
['jack', 'guido', 'irv']
>>> sorted(tel)
['guido', 'irv', 'jack']
>>> 'guido' in tel
True
>>> 'jack' not in tel
False
>>>

功能二:高级数据结构

利用 Pottery,可以轻松实现如布隆过滤器等高级数据结构,这在处理大规模数据去重时非常有用。
布隆过滤器是一种强大的数据结构,可以帮助您回答这样的问题:

  • “我以前见过这个元素吗?”
  • “我见过多少不同的元素?”

而不是

  • “我以前见过的所有元素都是什么?”

因此,可以将 Bloom 过滤器想象成 Python 集合,您可以向其中添加元素,用于测试元素成员关系,并获取长度,但是不能迭代或从中获取元素

>>> from pottery import BloomFilter
>>> dilberts = BloomFilter(
...     num_elements=100,
...     false_positives=0.01,
...     redis=redis,
...     key='dilberts',
... )

>>> dilberts.add('rajiv')

# 下面便可以使用布隆过滤器功能
>>> 'rajiv' in dilberts
True
>>> 'raj' in dilberts
False
>>> 'dan' in dilberts
False
>>>

高级功能:计时器

Pottery 中的ContextTimer还提供了准确度量运行时间的功能。
请注意的是:测量的是实际时间,而不是 CPU 时间,同时elapsed ()返回的时间以毫秒为单位

>>> import time
>>> from pottery import ContextTimer
>>> timer = ContextTimer()
>>> timer.start()
>>> time.sleep(0.1)
>>> 100 <= timer.elapsed() < 200
True
>>> timer.stop()
>>> time.sleep(0.1)
>>> 100 <= timer.elapsed() < 200
True

当然也可以作为一个上下文管理器

>>> tests = []
>>> with ContextTimer() as timer:
...     time.sleep(0.1)
...     tests.append(100 <= timer.elapsed() < 200)
>>> time.sleep(0.1)
>>> tests.append(100 <= timer.elapsed() < 200)
>>> tests
[True, True]
>>>

总结

Pottery 通过提供一系列简化的接口和强大的功能,使得在 Python 中使用 Redis 变得前所未有的简单和高效。无论是需要快速访问数据、处理大规模数据集去重,还是实现复杂的分布式应用,Pottery 都是一个值得掌握的强大工具。

标签:Pottery,...,tel,Redis,redis,简化,jack
From: https://www.cnblogs.com/luckzack/p/18177282

相关文章

  • redis 安装
    redis下载https://download.redis.io/releases/#解压tar-zxvfredis-5.0.14.tar.gz#移动mvredis-5.0.14/usr/local/redis#进入redis工作目录下cd/usr/local/redis/#编译make#redis安装#PREFIX=这个关键字的作用是编译的时候用于指定程序存放的路径。#比......
  • java连接redis,兼容主从切换
    使用redis的主从集群兼容情况:当redis的主从,通过网络问题或者机器异常问题发生了主从切换,程序能自动识别到主从变更,进而连master进行写操作做到无感知在使用Java连接到Redis主从集群时,确保应用程序能够在发生主从切换时自动感知并更新连接至新的主节点是非常重要的。这通常涉及......
  • redis-nginx-consul-rocketmq-主机巡检脚本
    架构介绍:6台服务器(192.55.11.1192.55.11.2192.55.11.3192.55.11.4192.55.11.5192.55.11.6)192.55.11.1 192.55.11.2只需巡检主机的cpu、内存、磁盘192.55.11.3需巡检主机的cpu、内存、磁盘,Nginx的连接数192.55.11.4 192.55.11.5需巡检主机的cpu、内存、磁盘,consul日志......
  • Redisson的看门狗机制底层实现
    1.看门狗机制概述看门狗机制是Redission提供的一种自动延期机制,这个机制使得Redission提供的分布式锁是可以自动续期的。privatelonglockWatchdogTimeout=30*1000;1看门狗机制提供的默认超时时间是30*1000毫秒,也就是30秒如果一个线程获取锁后,运行程序到释放锁所花费的时......
  • 宝塔Linux面板redis服务开多个端口
    原文:https://blog.csdn.net/weixin_38272324/article/details/126421073首先找到redis文件夹 ,找到redis.conf文件,复制一份,重命名为redis_6380.conf;#进入redis文件夹cd/www/server/redis#编辑文件vimredis_6380.conf#按i进入insert模式#修改内容#93行port6380#159......
  • redis自学(41)JVM进程缓存
      前置数据库的表规划:数据库的表尽量做分离,是因为一个商品的数据事实上是非常多的,需要对商品的数据进行解耦,字段太多查询的效率会比较低;另一方面,系统需要给数据加缓存,如果都在一张表里,那么作为缓存的话,就只有一整条数据作为缓存,一旦一条数据里的任意一个字段做了修改,整个商品......
  • Redis开源社区持续壮大,华为云为Valkey项目注入新的活力
    摘要:作为Valkey社区的TechnicalSteeringCommitteemember,华为云将持续参与社区建设。一、背景今年3月21日,RedisLabs宣布从Redis7.4版本开始,将原先比较宽松的BSD源码使用协议修改为RSAv2和SSPLv1协议,意味着Redis在OSI(开放源代码促进会)定义下不再是严格的开源产品。Redis......
  • Redis多数据源,看这篇就够了
    背景Redis多数据源常见的场景:分区数据处理:当数据量增长时,单个Redis实例可能无法处理所有的数据。通过使用多个Redis数据源,可以将数据分区存储在不同的实例中,使得数据处理更加高效。多租户应用程序:对于多租户应用程序,每个租户可以拥有自己的Redis数据源,以确保数据隔离和安全性......
  • Redis基础篇笔记
    一、Redis入门1.认识NoSQL1.1 什么是NoSQLNoSQL最常见的解释是"non-relational",很多人也说它是"NotOnlySQL"NoSQL仅仅是一个概念,泛指非关系型的数据库区别于关系数据库,它们不保证关系数据的ACID特性NoSQL是一项全新的数据库革命性运动,提倡运用非关系型的数据存储,相对于......
  • 测试 springboot 项目苍穹外卖,解决 Unable to connect to Redis 错误问题
       使用IDEA启动springboot项目苍穹外卖后台项目sky-take-out,测试“菜品批量删除”接口时,能够正常完成操作,但是服务器始终显示下面错误信息:2024-05-0320:54:24.134ERROR24360---[nio-8181-exec-3]o.a.c.c.C.[.[.[/].[dispatcherServlet]  :Servlet.service()fo......