python原生数据结构“DICTIONARY”和“Redis”数据库有什么区别?

pyA*_*ict 11 python dictionary redis

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

小智 8

提出问题无需请求原谅!:) 事实上,几周前我刚刚回答了一位同事提出的类似问题。

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

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


Cai*_*ard 6

这有点像问“在我看到使用 mySQL 数据库的任何地方,我都可以将数据存储在程序中的一个变量中,并在我想关闭电源时将其写入文本文件;我们为什么要为数据库而烦恼?”

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

如果您认为您永远不需要 redis 缓存,因为您的应用程序永远不会增长到足够大,那么很好 - 不要使用它。这并不是说你应该完美地实现一切来处理十亿假设用户;在一开始就做出一些明智的速赢设计决策 对你的应用有一天会被要求做什么要现实一点:毕竟 640k 对任何人来说都不够

  • 啊,所以“可扩展性”就是一个词的答案。 (3认同)