diff --git a/src/modules/hellodict.c b/src/modules/hellodict.c
index b99f9f07..651615b0 100644
--- a/src/modules/hellodict.c
+++ b/src/modules/hellodict.c
@@ -68,6 +68,42 @@ int cmd_GET(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) {
     }
 }
 
+/* HELLODICT.KEYRANGE <startkey> <endkey> <count>
+ *
+ * Return a list of matching keys, lexicographically between startkey
+ * and endkey. No more than 'count' items are emitted. */
+int cmd_KEYRANGE(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) {
+    if (argc != 4) return RedisModule_WrongArity(ctx);
+
+    /* Parse the count argument. */
+    long long count;
+    if (RedisModule_StringToLongLong(argv[3],&count) != REDISMODULE_OK) {
+        return RedisModule_ReplyWithError(ctx,"ERR invalid count");
+    }
+
+    /* Seek the iterator. */
+    RedisModuleDictIter *iter = RedisModule_DictIteratorStart(
+        Keyspace, ">=", argv[1]);
+
+    /* Reply with the matching items. */
+    char *key;
+    size_t keylen;
+    long long replylen = 0; /* Keep track of the amitted array len. */
+    RedisModule_ReplyWithArray(ctx,REDISMODULE_POSTPONED_ARRAY_LEN);
+    while((key = RedisModule_DictNextC(iter,&keylen,NULL)) != NULL) {
+        if (replylen >= count) break;
+        if (RedisModule_DictCompare(iter,"<=",argv[2]) == REDISMODULE_ERR)
+            break;
+        RedisModule_ReplyWithStringBuffer(ctx,key,keylen);
+        replylen++;
+    }
+    RedisModule_ReplySetArrayLength(ctx,replylen);
+
+    /* Cleanup. */
+    RedisModule_DictIteratorStop(iter);
+    return REDISMODULE_OK;
+}
+
 /* This function must be present on each Redis module. It is used in order to
  * register the commands into the Redis server. */
 int RedisModule_OnLoad(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) {
@@ -85,6 +121,10 @@ int RedisModule_OnLoad(RedisModuleCtx *ctx, RedisModuleString **argv, int argc)
         cmd_GET,"readonly",1,1,0) == REDISMODULE_ERR)
         return REDISMODULE_ERR;
 
+    if (RedisModule_CreateCommand(ctx,"hellodict.keyrange",
+        cmd_KEYRANGE,"readonly",1,1,0) == REDISMODULE_ERR)
+        return REDISMODULE_ERR;
+
     /* Create our global dictionray. Here we'll set our keys and values. */
     Keyspace = RedisModule_CreateDict(NULL);