一个python类,用于使用redis或其他键值存储,并缓存读取繁重工作负载的值。

redis-pubsub-dict的Python项目详细描述


PyPI version

使用redis或其他键值存储的python类,作为 字典和本地缓存值,以便读取繁重的工作负载。 深受pylru的启发。

用法

其思想是删除或更新 PubSubRedisDictPubSubCacheManager将更新匹配 所有PubSubCacheManager实例中的缓存键。 PubSubCacheManager因此将维护最近使用的缓存 使用lru或直接使用dict()的键。这将减少 缓存的任何读取的往返延迟和网络开销 钥匙。

RedisDictRedisDict应该与 redis.StrictRedisrediscluster.StrictRedisCluster。使用 prefix用于管理redis密钥命名空间。

重新发现

就像一本普通的字典,但是是联网的。初始化不需要 dictionary或iterable暂时需要连接和命名空间 信息。

rc=StrictRedisCluster(startup_nodes=[{"host":"redis","port":"6379"}])reddict=RedisDict(rc,'namespace')# you can setreddict[1]=1reddict[2]=[1,2,3]reddict['hello']='world'reddict[('complex',1)]={'I':{'Am':{'Quite':['a','complex',{'object':{}}]}}}# get somewhere elsereddict[1]reddict['1']# note its the same as reddict[1]reddict[('complex',1)]reddict["('complex', 1)"]# the key is str(('complex',1))# deletedelreddict[1]# .. ect

pubsubredisdict

类似于RedisDict,但会将密钥更新和删除事件发布到 <namespace>/[update|delete]频道。

redpubsub=PubSubRedisDict(rc,'namespace')# ect as before

公共子化学经理

类似于pylry.WriteThroughCacheManager,但从 当它从 <namespace>/[update|delete]频道。

cache=pylru.lrucache(10)# maybe more than 10redstore=PubSubRedisDict(rc,'namespace')redcache=PubSubCacheManager(redstore,cache)# ect as before# see the cacheprintdict(redcache.cache)

进一步使用

您可以将RedisDictPubSubRedisDict连接到 pylru.WriteBackCacheManager获取支持redis的字典 仅在“刷新”时或项目从^{tt5}弹出时写入redis$ 用于写密集型工作负载。不过,还需要做更多的工作 增加了pubsub机制,因为有困难的情况需要考虑, 比如当缓存变脏时会发生什么 存储密钥已更新?

限制

  • 所有键都是字符串。
  • msgpack用于封送对象到redis,因此msgpack 对象限制适用。尽管你可以给模块打补丁 loadsdumps方法(如果您愿意)。
  • publish将发布到所有正在使用的字典实例,其中 没有分区,所以写和更新是昂贵的。你可以来 使用分区策略来改进这一点。
  • 发表的文章最终以被关注的现金收场。有可能 在客户端发布更改和密钥 正在另一个客户端缓存中更新。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Android使用两个后台服务错误   解压缩HTTPInputStream时,java GZIPInputStream过早关闭   javax和javax的区别是什么。网ssl。密钥库和服务器。ssl。为SpringBoot应用程序指定密钥库时的密钥库属性   java生成两个JPanel,而我只需要一个   java深度链接从play store安装应用程序时获取数据   java 安卓应用程序在退出时未正确释放蓝牙   java正确使用setCellValueFactory   java开放JdbcTemplate连接处于只读模式?   使用Spring MVC创建服务时发生java错误   JavaFX获取安装在计算机中的特定应用程序的版本   SecureRandom的安全问题:PRNG在java 1.5中不一致   windows我可以创建一个独立的。带Inno设置的Java应用程序的exe安装程序?   如何使用JavaServlet下载csv文件?   java从生成的缓冲图像中添加图像作为jasper中的数据记录?   java日期和时间解析