【发布时间】:2020-02-14 13:00:23
【问题描述】:
我试图在我的 redis 有序列表上获取实时更新,但没有成功。 似乎它获取了所有项目并仅在最后一个项目上结束。 我希望客户在我的订购列表中不断获取新订单的更新。 我错过了什么?
这是我的代码:
@RestController
class LiveOrderController {
@Autowired
lateinit var redisOperations: ReactiveRedisOperations<String, LiveOrder>
@GetMapping(produces = [MediaType.TEXT_EVENT_STREAM_VALUE], value = "/orders")
fun getLiveOrders(): Flux<LiveOrder> {
val zops = redisOperations?.opsForZSet()
return zops?.rangeByScore("orders", Range.unbounded())
}
}
【问题讨论】:
-
zops 是什么数据类型?
-
zops 是一个 ReactiveZSetOperations
-
那个方法并没有像你想象的那样做。您需要使用 pub/sub 或 keyspace 通知来监听更改。值得一读响应式 API 的作用及其动机 - github.com/lettuce-io/lettuce-core/wiki/Reactive-API-(5.0)。
标签: spring-boot kotlin redis reactive-programming spring-webflux