Dan Liang wrote:
> We have been using redis 2.6 in our system and it works very well. At some
> point in the near future we'd need to move over to IPv6. Wondering what's
> redis IPv6 support story? I'm not able to find anything at
redis.io. The
> questions are:
> - Can redis server run on an IPv6 host?
> - If redis server must run on an IPv4 host, can it accept requests from
> an IPv6 client?
> - Any certification tests done for the IPv6 support?
The lack of IPv6 support is the reason why we can't currently choose Redis
in our setup, as some of the clients are IPv6-only (either in kernel, or
just without a configured IPv4 address and network). Otherwise I'm very
much impressed with redis (and its Lua scripting) and it works very well
and fast in a test environment.
I realize the support for IPv6 is targeted for the 2.8 release, but
it seems it has stalled somewhat.
There are three related pull requests:
#60 Use getaddrinfo(3) and inet_ntop/inet_pton
#61 Add support for IPv6
and a somewhat related:
#939 Support for binding to more than one IP address
I tried to cherry-pick these changes into 2.6 or to unstable branches,
or at least tried to install the #60 fork, but I didn't have much
success because code seems to have diverged somewhat, and also due
to my lack of skills with git. Certainly not something I'd want
to run in a production environment.
Now that the 2.6.14 is out, I wish these changes were pulled in
into either 2.8 or into unstable by a skillful hand. It's alright
if it's not fully polished and if perhaps it lacks full support by
sentinel / cluster for the time being. It's much easier to add missing
features to an already usable version, then to work on a stale branch,
with a potentially dubious future.
I have some concerns with some details in #61 (like an unnecessary
introduction of a 'port6' setting - a port number is a port number,
same in INET and in INET6). Also I'd be much happier if 'bind' and
'bind6' and 'unixsocket' were merged into a single setting, which
(based on the #939 request) it may look like:
port 6379 # a default port number, unless overridden in 'listen'
listen [::1]:6789 127.0.0.1 /tmp/redis.sock
172.16.0.9:444 /var/x/y.z
... although this is mostly a detail that can be discussed and
sorted out after a merge of the baseline bulk of necessary changes.
I cheer to the already very good project, hoping to make it even
better. I'm willing to partipate in testing and sorting out detail,
just need a stable base for a start.
Regards
Mark