python原生数据结构和#34; DICTIONARY"有什么区别?和" Redis"数据库?

时间:2017-12-27 07:26:24

标签: python dictionary redis

到目前为止,在我的所有测试案例中,我似乎也可以使用python字典代替redis.So我无法说服我自己为什么Redis? 注意: 我是Redis的新手,所以请原谅我这么天真的问题。

2 个答案:

答案 0 :(得分:2)

无需请求原谅提问! :)事实上,几周前我刚从一位同事那里得到了类似的问题。

Redis对象与您在许多其他编程语言中可能会看到的熟悉数据结构非常相似。 Redis哈希与Python词典非常类似,Redis集类似于Python集,Redis字符串类似于Python字符串等。这是真的。但是如果不是包含10个元素的字典,你必须操纵包含1,000个元素的字典。或者,如果您必须存储数百个包含数十个键的词典,该怎么办?如果您必须存储未知数量的信息(例如,您希望用户能够注册您的服务并创建配置文件),该怎么办? Redis首先是一个数据存储引擎(如MySQL,MongoDB等)。它恰好也为您提供了多种结构化数据的方式,这些方式与您在应用程序代码中构建数据的方式非常相似,因此使用Redis中的数据实现某些模式非常简单您可能熟悉应用程序开发人员。这有意义吗?

我也有#34;数据"应该始终与应用程序逻辑分开存储,但我认为这可能是关于哲学而不是实用性的单独对话。 ;)

答案 1 :(得分:1)

这有点像问“我到处看到mySQL数据库的所有地方,我可能只是将数据存储在程序中的变量中,并在我想要关闭时将其写入文本文件;为什么我们要打扰数据库? “

字典是您自己程序内存中基于临时密钥的数据结构。 redis缓存是基于临时密钥的数据存储工具;它是独立的自包含缓存软件,可以作为企业级服务进行安装,扩展和共享。它还提供管理存储的数据;当然,它可能看起来像一个基于本地记忆的字典(这是吸引力的一部分;简单和熟悉低级设备做同样的事情),但只是想象你的老板来,​​并说“我们“变得非常受欢迎,我们需要将网站放在20个网络服务器上来处理负载”。如果用字典实现这个缓存就是一个噩梦。使用旨在成为共享的缓存服务可以使工作更轻松。

如果您认为自己不需要redis缓存,因为您的应用程序永远不会变得足够大,那么请不要使用。这并不是说你应该完美地实现一切,以处理十亿个假设的用户;只需在一开始就做出一些明智的快速设计决策,对于你的应用程序有一天会被要求做的事情是现实的:毕竟640k对于任何人来说还不够