gpt4 book ai didi

multithreading - 实现 token 缓存

转载 作者:行者123 更新时间:2023-12-02 03:36:41 25 4
gpt4 key购买 nike

我正在尝试实现一个简单的缓存,其中我的缓存将仅包含身份验证服务器返回到我的应用程序的最新 token 。有不同的工作线程尝试同时登录到身份验证服务器。这增加了身份验证服务器的负载,而且我的应用程序变得很慢,因为每个身份验证线程都有一个与服务器相关的往返行程。因此,通过实现一个简单的 token 缓存, token 将被缓存在客户端,并且仅当其中一个身份验证线程无法登录时才会更新。失败者将从认证服务器获取新 token 。

我遇到的问题是,当任何身份验证线程失败并更新 token 缓存时,可能有一些线程已经读取了旧 token 并最终失败,它们也会尝试更新缓存。一旦缓存已更新,我如何阻止这些线程更新缓存?

最佳答案

一种可能的解决方案是为检索到的 token 分配一个时间戳。时间戳不必是“真实的”,一个序列号就足够了。

当线程从 token 缓存中检索 token 时,它还会检索与 token 关联的序列号。当一个线程登录失败时,它首先必须再次检查本地缓存,看看缓存是否在它检索到它的 token 后被刷新。如果当前 token 的序列号与它当前拥有的序列号不同,它可以使用缓存中的 token 重试。

仅当登录失败且自检索失败 token 后缓存未刷新时才需要更新 token 缓存。

序列号有一个完整的循环循环的可能性很小,并且任务被误认为缓存没有被刷新,而实际上它有很多次,但这更像是一个理论上的可能性大于实际问题。

关于multithreading - 实现 token 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22952869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com