Quick start for YEDIS

Quick start

This page documents the preview (v2.21) version. Preview includes features under active development and is for development and testing only. For production, use the stable (v2024.1) version.

After creating a local cluster, follow the instructions below to test YugabyteDB's Redis-compatible YEDIS API.

redis-cli is a command line interface to interact with a Redis server. For ease of use, YugabyteDB ships with the 4.0.1 version of redis-cli in its bin directory.

1. Initialize YEDIS API and connect with redis-cli

  • Initialize the YEDIS API.

Set up the redis_keyspace keyspace and the .redis table so that this cluster becomes ready for Redis clients. Detailed output for the setup_redis command is available in the yb-ctl Reference.

$ ./bin/yb-ctl setup_redis
  • Run redis-cli to connect to the service.
$ ./bin/redis-cli
127.0.0.1:6379>
  • Run a Redis command to verify it is working.
127.0.0.1:6379> PING
"PONG"
  • Initialize the YEDIS API.

Set up the redis_keyspace keyspace and the .redis table so that this cluster becomes ready for Redis clients. Detailed output for the setup_redis command is available in the yb-ctl Reference.

$ ./bin/yb-ctl setup_redis
  • Run redis-cli to connect to the service.
$ ./bin/redis-cli
127.0.0.1:6379>
  • Run a Redis command to verify it is working.
127.0.0.1:6379> PING
"PONG"
  • The yb-docker-ctl utility initializes the YEDIS API automatically.

  • Run redis-cli to connect to the service.

$ docker exec -it yb-tserver-n1 /home/yugabyte/bin/redis-cli
127.0.0.1:6379>
  • Run a Redis command to verify it is working.
127.0.0.1:6379> PING
"PONG"
  • Initialize YEDIS API in the YugabyteDB universe you just set up by running the following yb-admin command.
$ kubectl exec -it yb-master-0 -- /home/yugabyte/bin/yb-admin --master_addresses yb-master-0.yb-masters.default.svc.cluster.local:7100 setup_redis_table
...
I0127 19:38:10.358551   115 client.cc:1292] Created table system_redis.redis of type REDIS_TABLE_TYPE
I0127 19:38:10.358872   115 yb-admin_client.cc:400] Table 'system_redis.redis' created.

Run redis-cli to connect to the service.

You can do this as shown below.

$ kubectl exec -it yb-tserver-0 -- /home/yugabyte/bin/redis-cli
127.0.0.1:6379>

Run a YEDIS command to verify it is working.

127.0.0.1:6379> PING
"PONG"

2. Simple key-value types

Insert a key and a value.

127.0.0.1:6379> set mykey somevalue
"OK"

Query the value by the key.

127.0.0.1:6379> get mykey
"somevalue"

Check if the key exists.

127.0.0.1:6379> exists mykey
(integer) 1

If the value is a number, it can be incremented.

127.0.0.1:6379> set counter 100
"OK"
127.0.0.1:6379> incr counter
(integer) 101
127.0.0.1:6379> incr counter
(integer) 102
127.0.0.1:6379> get counter
"102"

3. Hash data types

You can create a Redis Hash data type as follows. This models the data for user id 1000 with the following attributes: {username : john, birthyear : 1977, verified : 1}.

127.0.0.1:6379> hmset user:1000 username john birthyear 1977 verified 1
"OK"

You can retrieve specific attributes for user id 1000 as follows.

127.0.0.1:6379> hget user:1000 username
"john"
127.0.0.1:6379> hget user:1000 birthyear
"1977"

You can fetch multiple attributes with a single command as follows.

127.0.0.1:6379> hmget user:1000 username birthyear no-such-field
1) "john"
2) "1977"
3) (nil)

You can fetch all attributes by using the hgetall command.

127.0.0.1:6379> hgetall user:1000
1) "birthyear"
2) "1977"
3) "username"
4) "john"
5) "verified"
6) "1"