First, requirement: 1. Hibernate's second-level cache 2. Independent Business cache 3. Support for region, support for keySet, containsKey, and region traversal first, read the famous memcached and the client spymemcached. Failed. First of all, region is not supported, and various wheels are made by adding prefixes to keys. KeySet, containsKey, and traversal are not supported. So Pass. Then I saw the ehcache server. Unfortunately, people seem to have gone to torrxxxx, a commercial version. The ehcache server has not been updated for more than two years, and there is no documentation or network text combined with hibernate second-level cache. Pass. Then we can see Infinispan, which is said to be the successor of jboss cache. I also saw hibernate-infinispan, which also supports partitioning. You can use RemoteCacheStore to implement the hibernate second-level cache and query cache using a remote cache server. After an in-depth attempt, we found that jta is required first, which is too common. Second, hibernate-infinispan explicitly states that the three cache policies, including read-only, non-restrict-read-write, and transactional, are supported. However, there are a lot of read-write tasks in my existing code. So it failed. Finally, we can see redis and jedis. Currently popular nosql databases. You can also implement the functions you want. According to the network file, you can use hashes to implement region. This aspect basically meets the requirements. Then I am very happy to find the hibernate-redis project on github. After careful reading, only the read-only and non-restrict-read-write cache policies are supported. Depressed. Later, I also saw a jedis-lock project on github and implemented the redis lock mechanism. I started to try to modify the hibernate-redis, dependent on jedis-lock, and wanted to implement a read-write policy. I found that I am still not familiar with the cache part of hibernate, including various softLock and other things, look at the ehcache code to see the top. Depressed.