Java 生成用于存储在缓存中的唯一id

Java 生成用于存储在缓存中的唯一id,java,caching,key-value,Java,Caching,Key Value,我正在维护一个具有唯一id和相应值的缓存,以便在类Y中检索。该唯一id是类Y知道的要检索的内容。缓存值配置为在10分钟内过期 我能想到的解决方案是生成一个增量值作为uniquq id。对于每个新条目,都会有一个新id(+1)。但是,这将是一个永远不会被重置的值-尽管特定缓存元素的值在10分钟后不再需要 如何最好地生成此唯一id?添加1时,还需要注意线程安全。 最好使用java.util.UUID 而且不关心任何重置 但说实话,缓存密钥应该根据缓存内容创建(例如,基于请求参数的哈希函数),因此相同

我正在维护一个具有唯一id和相应值的缓存,以便在类Y中检索。该唯一id是类Y知道的要检索的内容。缓存值配置为在10分钟内过期

我能想到的解决方案是生成一个增量值作为uniquq id。对于每个新条目,都会有一个新id(+1)。但是,这将是一个永远不会被重置的值-尽管特定缓存元素的值在10分钟后不再需要


如何最好地生成此唯一id?

添加1时,还需要注意线程安全。 最好使用
java.util.UUID
而且不关心任何重置


但说实话,缓存密钥应该根据缓存内容创建(例如,基于请求参数的哈希函数),因此相同的参数将获得相同的缓存ky-因此,您将从缓存中检索值…

添加1时,您还需要注意线程安全。 最好使用
java.util.UUID
而且不关心任何重置


但是说实话,应该从缓存内容创建缓存密钥-(例如,基于请求参数的哈希函数),这样相同的参数将得到相同的缓存ky-因此,您将从缓存中检索值…

十分钟后,仅缓存不再需要,或者以前缓存的Y类的每个实例都是不需要的?以前缓存的Y类的每个实例也是不需要的编辑非常不清楚您实际试图实现什么。您正在缓存什么类型的数据?您如何知道检索值的ID?如果需要唯一,为什么要重置ID值?再次检查你是否真的提出了正确的问题。请参阅:XYProblem。十分钟后,不再需要缓存,或者以前缓存的每个Y类实例也不需要?以前缓存的每个Y类实例也不需要编辑不清楚您实际尝试实现的目标。您正在缓存什么类型的数据?您如何知道检索值的ID?如果需要唯一,为什么要重置ID值?再次检查你是否真的提出了正确的问题。见:问题。