微服务如何知道Redis密钥来访问Redis中的数据

eufgjt7s  于 5个月前  发布在  Redis
关注(0)|答案(2)|浏览(76)

我一直在搜索关于微服务如何访问Redis数据的很多内容,但没有找到好的教程。下面是我的用例。
用户第一次登录认证微服务A(spring Boot )。认证后,微服务A将用户的配置文件数据存储在Redis缓存中。
现在有微服务B(Sping Boot )和微服务C(NodeJs)。这两个微服务想要从Redis读取用户的配置文件。
我的问题是,这两个服务B和C如何知道认证微服务A用于存储配置文件数据的密钥,以便它们可以使用它来访问数据?
Redis密钥是否应该写入属性文件并在微服务之间共享?在真实的世界生产环境中如何做到这一点?

ccgok5k5

ccgok5k51#

如果你需要通知其他服务,并使用Redis来做这件事,你可以使用Redis的发布/订阅功能。你可以使用服务B和C订阅的通道newuser,让服务A在创建新用户密钥时将它们发布到该通道。
Read more about Redis Pub/Sub

pu3pd22g

pu3pd22g2#

这是一个更普遍的问题,所以我会问一个引导性问题,希望你没问题。
如果你有一个存储多个微服务使用的用户配置文件数据的关系数据库,你将如何共享表和字段名称?
如果你的回答是,“我不知道,这是一个好问题”,那么这实际上是一个关于在微服务之间共享数据的问题,而不是Redis特有的问题。
如果你知道这个问题的答案,那么就把它用在Redis上。Redis中的键名类似于关系数据库中的表名和字段名。
也就是说,有一个学派认为微服务不应该共享内部数据。相反,它们应该传递消息或相互调用,并且每个都应该有自己的数据库。而且,如果它们不这样做,它就真的是一个分布式的整体。我赞同这个学派的思想,所以我的建议是不要以这种方式构建你的软件。
也就是说,其他优秀的人有其他的意见,并订阅其他学校,这很好。毕竟,没有解决方案-只有权衡。如果我订阅了另一个学校,我会把它全部存储在配置文件中或硬编码它们。就像我对数据库表名一样。

相关问题