我用redis做我的项目统计已经有一段时间了。我在用 Jedis
,redis for java,目前用于该项目,但我也希望在多个平台(如网站、android甚至ios)中使用相同的redis服务器。项目经常使用redis来获取和设置。
我的问题
现在只有一个redis服务器,所以如果我想在多个平台上使用,它必须连接在当前服务器和redis服务器之间有延迟的专用服务器。我该怎么办?
我只想使用一个redis服务器来连接所有的连接。它是危险的还是可能影响性能?
如果你对这个主题有什么想法,我想听听你的想法!
1条答案
按热度按时间7ivaypg91#
首先;为了更好地进行横向扩展,应用服务器不应该存储任何数据。如果应用程序服务器
MySQL
数据库或Redis
在那里,由于它们不是“无国籍的”,所以很难扩展。如果要将第二个服务器添加到此设计中,则不能用数据复制应用程序服务器。要使其成为“无状态”,您必须将数据存储移出应用程序服务器。你对此无能为力。延迟是不可避免的。你可以做的是减少它。如果您的redis和应用服务器在同一个区域,那么这不会是一个大问题。如果您的应用程序不需要互联网接入,那么您可以将它们放在同一个专有网络中。
视情况而定。如果您的“应用程序a”每秒都在写入大型对象,那么“应用程序b”在读取时将受到影响,因为redis是单线程的。如果您的两个应用程序都只发出快速请求(例如:在小尺寸对象上获取/设置),那么这并不是什么大问题。
如果您对此有一些顾虑,可以检查复制以提供更高的可用性。
复制可以同时用于
scalability
,以便有多个副本用于只读查询(例如,可以将缓慢的o(n)操作卸载到副本中),或者只是为了提高数据安全性和可用性high availability
.