你能用Redis运行整个服务吗?



所以我目前正在开发一个消息传递应用程序来学习这个过程,我实际上使用Redis作为缓存,并使用它与websockets来推送实时消息。

然后,这个问题突然出现在我的脑海里:

是否可以使用Redis只运行整个服务(例如消息传递应用程序)?

注意:这意味着删除任何形式的数据库(我们只保留字符串)

我知道你可以设置Redis持久,但这就足够了吗?它足够健壮吗?这样做安全吗?还是完全疯了?

你是怎么想的?我很想知道,如果您认为可能的话,我可以试一试。

谢谢!

一些公司使用Redis作为他们的唯一或主数据库,所以这绝对不是疯狂的。

你可以使用Redis作为后端开发和运行一个完整的服务,只要你理解并接受它所隐含的权衡。

我的意思是:

  • 你可以使用Redis服务器作为高性能数据库,只要你的所有数据都可以驻留在内存中。这可能意味着你减少数据的大小,或者选择不存储一些数据,这些数据可能由你的应用程序在读访问时计算或从其他来源导入;

  • 如果你不能将所有数据存储在单个服务器的内存中,你可以使用Redis集群,但它会限制可用的Redis功能(见实现子集

  • 当服务器崩溃时,您必须考虑潜在的数据丢失,并确定它们是否可以接受。如果产生它们的进程是健壮的,并且在数据库重启时将重新创建它们,那么丢失一些数据可能是可以的(例如,当存储在Redis中的数据来自一个导入进程时,该进程将从最后一个导入项重新开始)。你也可以使用几个Redis实例,使用不同的持久化配置:一个在每次修改键时写入磁盘,避免潜在的数据丢失,但性能会低得多;另一个用于存储非关键数据,这些数据每隔几秒钟就会写入磁盘。

Redis可以用来存储结构化数据,而不仅仅是字符串,使用哈希。每次在关系模型中创建索引时,都必须在Redis中创建一个数据结构。例如,如果希望存储Person对象,则为每个对象创建一个HASH,以存储它们的属性,包括唯一ID。如果您希望能够按城市获取人员,您可以为每个城市创建一个SET,并在相应的SET中插入每个新创建的Person的ID。因此,您将能够获得给定城市的人员列表。这只是一个例子,您必须根据您的应用程序定义要使用的模型和数据结构。

最新更新