我一直阅读spring Data Redis,它与spring data JPA非常相似。我有一个USER类,它的key有用户ID和值作为User对象。我试图找到所有的用户ID的(关键)从“/用户”散列存储此数据。
Spring data有一个很酷的功能,就是使用@Query,这显然不适用于spring data redis。
@Query("Select c.key from User c")
Set<String> getAllUserKey();
我已经尝试了上面的代码,但它给我的错误,无法识别的属性键.我已经看过了文档和谷歌,不认为这可以用spring-data redis来完成。
只是想确认我的理解,也想知道什么是处理此用例的最佳方法。我想收集关于一个哈希值下存储了多少个键的统计信息,以及其他一些用@Query很容易做到的事情
2条答案
按热度按时间mrzz3bfm1#
我认为你可以使用redisTemplate和redisTemplate.keys(“*”)
ifsvaxew2#
不,在Spring Data Redis中,搜索功能仅限于搜索二级索引(在Redis SET中创建/维护)。Spring Data Redis提供了“仓库接口的自动实现,包括对自定义查询方法的支持”。因此,您可以使用简单的仓库搜索方法,如
findByXXXandYYY.
。为了获得全搜索功能,Redis引入了RediSearch(https://redis.io/docs/stack/search/quick_start/),这是一个与Redis Stack(https://redis.io/docs/stack/)打包的搜索引擎,可以搜索存储在Redis中的哈希和JSON文档。
要使用Spring的Redis Stack特性,可以使用Redis OM Spring(https://github.com/redis/redis-om-spring)。一个通过Redis Stack功能扩展Spring Data Redis的库。它仍处于开发的早期阶段,但已接近1.0版本(免责声明:我是图书馆的主要贡献者)。
使用OM,您可以为集合(Hash/JSON)和用户存储库方法创建搜索索引,以执行更复杂的搜索,或者使用
EntityStream
类通过类似Java流的API进行搜索。