redis应该如何优雅地存入java bean?

我的思路是:
把java bean转为json格式字符串,然后用主键当作redis中的key,那个字符串当作redis中的value。这样一来,虽然可以实现通过主键快速在redis中查找缓存,但是如果我用bean别的属性作为查找条件时,这个思路就不行了。
现在我想实现:在redis中通过bean的任一个属性都能找到一个或多个bean的json字符串,应该如何实现?

缓存的作用是使得某一类查询请求不需要重复请求数据库,言外之意就是缓存中只会保存此前某个查询条件查出来的结果,不可能把整个数据库都load进缓存。
既然缓存里的只是部分数据库的数据,那你要实现的功能从缓存获取的数据就是不完整的,也必然是错误的逻辑。
redis是支持模糊查询的,命令是keys,会把所有符合条件的key都查出来,但是代价就是会阻塞其他redis操作,因此这个方法在企业服务中禁止使用。

这种用mongodb是不是好一点?