---
Title: KeysReader
alwaysopen: false
categories:
- docs
- operate
- stack
description: Gets keys and their values from a database.
linkTitle: KeysReader
weight: 60
---
Creates records from the keys and values stored in a Redis database.
{{}}
Currently only supports string and hash data types. For other data types, it will only extract the key name.
{{}}
## Constructors
You can use one of these constructors to create a new `KeysReader` object:
```java
public KeysReader()
public KeysReader(String pattern)
public KeysReader(String prefix, boolean readValues)
public KeysReader(String pattern, boolean noScan, boolean readValues)
public KeysReader(String prefix,
boolean readValues,
String[] eventTypes,
String[] keyTypes)
public KeysReader(String pattern,
boolean noScan,
boolean readValues,
String[] eventTypes,
String[] keyTypes)
```
## Parameters
| Name | Type | Default value | Description |
|------|------|---------------|-------------|
| commands | array of strings | null | The commands that this reader is registered on |
| eventTypes | array of strings | null | The [event types]({{< relref "/operate/oss_and_stack/stack-with-enterprise/gears-v1/register-events#event-types" >}}) to register on (usually the command name) |
| keyTypes | array of strings | null | The key types to register on |
| noScan | boolean | false | Whether or not to scan the key space or just read the pattern as is |
| pattern/prefix | string | "\*" (match all keys) | The reader will get all keys that match this pattern |
| readValues | boolean | true | Whether or not to read the keys' values |
## Output records
Creates a `KeysReaderRecord` for each matching key in the database.
| Name | Type | Description |
|------|------|-------------|
| key | string | The name of the key |
| type | long | The core Redis type: 'string', 'hash', 'list', 'set', 'zset', or 'stream' |
| event | string | The event that triggered the execution (null if using the run function) |
| stringVal | string | The key's value for string data types |
| hashVal | Map | The key's value for hash data types |
| listVal | List | The key's value for list data types |
| setVal | Set | The key's value for set data types |
## Examples
Here's a basic example of a `KeysReader` that creates records for all keys in the database:
```java
KeysReader reader = new KeysReader();
```
In the following example, the `KeysReader` creates records for all keys in the database that start with "person:". When registered, it only runs for hashes after `HSET` and `DEL` events occur.
```java
String[] eventTypes = {"HSET", "DEL"};
String[] keyTypes = {"HASH"};
KeysReader reader = new KeysReader("person:*", false, true, eventTypes, keyTypes);
```