我需要设计一个缓存来存储来自多个客户端的对象。这些客户端可以并行运行。这些对象需要存储在memcached上,以后再检索使用。
String newKey ;
private synchronized String setData(Data newData) {
do {
newKey = createRandomKey() ;
} while (memcacheClient.get(newKey) != null) ;
memcacheClient.set(newKey, 10000, newData) ;
}
我的问题是,这种方法会成为并行客户端访问的瓶颈吗?
要么
我应该创建一个共享列表和一个线程。线程将异步执行setData吗?
最佳答案
循环的延迟在很大程度上取决于如何实现createRondomKey的随机性。您必须使用随机密钥吗?是否可以提出一些语义命名方案(例如,userid / category / blabla)?这也将节省您记住随机密钥的精力。