--- acl_categories: - '@read' - '@stream' - '@fast' arguments: - display_text: key key_spec_index: 0 name: key type: key arity: 2 categories: - docs - develop - stack - oss - rs - rc - oss - kubernetes - clients command_flags: - readonly - fast complexity: O(1) description: Return the number of messages in a stream. group: stream hidden: false key_specs: - RO: true begin_search: spec: index: 1 type: index find_keys: spec: keystep: 1 lastkey: 0 limit: 0 type: range linkTitle: XLEN railroad_diagram: /images/railroad/xlen.svg since: 5.0.0 summary: Return the number of messages in a stream. syntax_fmt: XLEN key title: XLEN --- Returns the number of entries inside a stream. If the specified key does not exist the command returns zero, as if the stream was empty. However note that unlike other Redis types, zero-length streams are possible, so you should call [`TYPE`]({{< relref "/commands/type" >}}) or [`EXISTS`]({{< relref "/commands/exists" >}}) in order to check if a key exists or not. Streams are not auto-deleted once they have no entries inside (for instance after an [`XDEL`]({{< relref "/commands/xdel" >}}) call), because the stream may have consumer groups associated with it. ## Examples {{% redis-cli %}} XADD mystream * item 1 XADD mystream * item 2 XADD mystream * item 3 XLEN mystream {{% /redis-cli %}} ## Redis Software and Redis Cloud compatibility | Redis
Software | Redis
Cloud | Notes | |:----------------------|:-----------------|:------| | ✅ Standard
✅ Active-Active | ✅ Standard
✅ Active-Active | | ## Return information {{< multitabs id="xlen-return-info" tab1="RESP2" tab2="RESP3" >}} [Integer reply](../../develop/reference/protocol-spec#integers): the number of entries of the stream at _key_. -tab-sep- [Integer reply](../../develop/reference/protocol-spec#integers): the number of entries of the stream at _key_. {{< /multitabs >}}