You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ignite.apache.org by Roman Shtykh <rs...@yahoo.com.INVALID> on 2016/03/23 09:53:25 UTC

Enabling Redis protocol with Ignite

Igniters,
I was thinking on enabling Redis protocol with Ignite [1] so that any Redis client can use Ignite transparently.
Currently I have two ideas.
1. Implement it as a core functionality by adding GridRedisProtocol and appropriate commands/handlers, similarly to how it is done with REST and memcached, and use TCP binary protocol of the current implementation. For this I will probably have to do some refactoring in ignite/internal/processors/rest by creating ignite/internal/processors/ext to have other external protocols, like
ignite/internal/processors/ext `-- rest `-- memcached `-- redis
2. Implement it as an external module that is started on a local machine in a client mode by a user, interpreting Redis commands and sending to the Ignite cluster.
To be consistent with REST and memcached implementations, I prefer the 1st approach. Any objections or advice?
Another question -- at first glance memcached protocol is implemented as a part of REST implementation. For instance, GridTcpRestParser is essentially a memcached parser. Should it be refactored?
[1] https://issues.apache.org/jira/browse/IGNITE-2788

Re: Enabling Redis protocol with Ignite

Posted by Dmitriy Setrakyan <ds...@apache.org>.
Roman, if you can implement it within a couple of months, it will be great.
I also think this feature is big enough to warrant a new branch. This way
we can all do periodic reviews and provide comments.

D.

On Wed, Mar 23, 2016 at 6:13 PM, Roman Shtykh <rs...@yahoo.com.invalid>
wrote:

> Yakov,
> Thanks for the pointers, that's exactly what I needed.
> RESP (REdis Serialization Protocol) is not that complex, but depending on
> my other tasks it may take a month or two. I plan to implement the
> integration iteratively starting with the most used generic commands.If you
> need it earlier, someone else can pick the ticket, or we can create a
> branch to collaborate.
> -Roman
>
>
>     On Thursday, March 24, 2016 12:44 AM, Yakov Zhdanov <
> yzhdanov@apache.org> wrote:
>
>
>  Roman,
>
> I like the idea! How complex is the protocol implementation? How long will
> it take to implement?
>
> As far as I remember TcpRestParser switches the correct mode on as soon as
> it receives the first message over the connection.  You can try adding
> Redis mode to it. Is that what you ask for?
>
>
>
>
> --Yakov
>
> 2016-03-23 11:53 GMT+03:00 Roman Shtykh <rs...@yahoo.com.invalid>:
>
> > Igniters,
> > I was thinking on enabling Redis protocol with Ignite [1] so that any
> > Redis client can use Ignite transparently.
> > Currently I have two ideas.
> > 1. Implement it as a core functionality by adding GridRedisProtocol and
> > appropriate commands/handlers, similarly to how it is done with REST and
> > memcached, and use TCP binary protocol of the current implementation. For
> > this I will probably have to do some refactoring in
> > ignite/internal/processors/rest by creating
> ignite/internal/processors/ext
> > to have other external protocols, like
> > ignite/internal/processors/ext `-- rest `-- memcached `-- redis
> > 2. Implement it as an external module that is started on a local machine
> > in a client mode by a user, interpreting Redis commands and sending to
> the
> > Ignite cluster.
> > To be consistent with REST and memcached implementations, I prefer the
> 1st
> > approach. Any objections or advice?
> > Another question -- at first glance memcached protocol is implemented as
> a
> > part of REST implementation. For instance, GridTcpRestParser is
> essentially
> > a memcached parser. Should it be refactored?
> > [1] https://issues.apache.org/jira/browse/IGNITE-2788
> >
>
>
>
>

Re: Enabling Redis protocol with Ignite

Posted by Roman Shtykh <rs...@yahoo.com.INVALID>.
Yakov,
Thanks for the pointers, that's exactly what I needed.
RESP (REdis Serialization Protocol) is not that complex, but depending on my other tasks it may take a month or two. I plan to implement the integration iteratively starting with the most used generic commands.If you need it earlier, someone else can pick the ticket, or we can create a branch to collaborate.
-Roman
 

    On Thursday, March 24, 2016 12:44 AM, Yakov Zhdanov <yz...@apache.org> wrote:
 

 Roman,

I like the idea! How complex is the protocol implementation? How long will
it take to implement?

As far as I remember TcpRestParser switches the correct mode on as soon as
it receives the first message over the connection.  You can try adding
Redis mode to it. Is that what you ask for?




--Yakov

2016-03-23 11:53 GMT+03:00 Roman Shtykh <rs...@yahoo.com.invalid>:

> Igniters,
> I was thinking on enabling Redis protocol with Ignite [1] so that any
> Redis client can use Ignite transparently.
> Currently I have two ideas.
> 1. Implement it as a core functionality by adding GridRedisProtocol and
> appropriate commands/handlers, similarly to how it is done with REST and
> memcached, and use TCP binary protocol of the current implementation. For
> this I will probably have to do some refactoring in
> ignite/internal/processors/rest by creating ignite/internal/processors/ext
> to have other external protocols, like
> ignite/internal/processors/ext `-- rest `-- memcached `-- redis
> 2. Implement it as an external module that is started on a local machine
> in a client mode by a user, interpreting Redis commands and sending to the
> Ignite cluster.
> To be consistent with REST and memcached implementations, I prefer the 1st
> approach. Any objections or advice?
> Another question -- at first glance memcached protocol is implemented as a
> part of REST implementation. For instance, GridTcpRestParser is essentially
> a memcached parser. Should it be refactored?
> [1] https://issues.apache.org/jira/browse/IGNITE-2788
>


  

Re: Enabling Redis protocol with Ignite

Posted by Yakov Zhdanov <yz...@apache.org>.
Roman,

I like the idea! How complex is the protocol implementation? How long will
it take to implement?

As far as I remember TcpRestParser switches the correct mode on as soon as
it receives the first message over the connection.  You can try adding
Redis mode to it. Is that what you ask for?




--Yakov

2016-03-23 11:53 GMT+03:00 Roman Shtykh <rs...@yahoo.com.invalid>:

> Igniters,
> I was thinking on enabling Redis protocol with Ignite [1] so that any
> Redis client can use Ignite transparently.
> Currently I have two ideas.
> 1. Implement it as a core functionality by adding GridRedisProtocol and
> appropriate commands/handlers, similarly to how it is done with REST and
> memcached, and use TCP binary protocol of the current implementation. For
> this I will probably have to do some refactoring in
> ignite/internal/processors/rest by creating ignite/internal/processors/ext
> to have other external protocols, like
> ignite/internal/processors/ext `-- rest `-- memcached `-- redis
> 2. Implement it as an external module that is started on a local machine
> in a client mode by a user, interpreting Redis commands and sending to the
> Ignite cluster.
> To be consistent with REST and memcached implementations, I prefer the 1st
> approach. Any objections or advice?
> Another question -- at first glance memcached protocol is implemented as a
> part of REST implementation. For instance, GridTcpRestParser is essentially
> a memcached parser. Should it be refactored?
> [1] https://issues.apache.org/jira/browse/IGNITE-2788
>