passed mostly test(less than 200 for 1M case)
can't understand notice22
fix put
add lock for cache