edis 3.2.2 发布了，Redis 是一个高性能的key-value数据库。 redis的出现，很大程度补偿了memcached这类keyvalue存储的不足，在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python，Ruby，Erlang，PHP客户端，使用很方便。
- There was a bug in the List type implementation, able to cause the crash of the server under certain (non trivial to replicate) circumstances when the LSET command was used. Now the bug is fixed and a new stress tester that was able to easily trigger the bug was added to the test suite.
- Redis Sentinel, when monitoring multiple masters, could crash after a Sentinel address update event.
- Redis Sentinel now checks slaves INFO state more often when disconnected. This is not really a bug fix, but may allow to more easily detect that a slave is able to fail over its master reducing certain delays.
- It was possible, under a variety of conditions, that the AOF and RDB children process could spawn at the same time. This is known to trash disk I/O, AOF performances, and to ultimately create latency in the Redis server. Normally Redis avoids to have the two writing children at the same time, but there were edge cases discovered by Oran Agra (that also co-authored the fix with me) where the double-fork could happen. In order to fix this bug non trivial changes to the replication code were operated, however it was important to back port this fix into 3.2.2 because the bug could lead to bad latency experiences in certain cases.
- Many GEORADIUS bugs are now fixed \o/. This started as a failing CI test. I grepped for more clues and there were a number of random failures in the points reported by GEORADIUS. The errors were found to be related to three different bugs (one of these was a bug in the test itself). It’s not a critical bug: the effect is to, sometimes, don’t report objects that are near the radius, but only with specific sets of coordinates and radius settings. However now the issues are fixed and the error vectors were added as regression tests.
- Now slaves support the slave-announce-ip and slave-announce-port options. Using these features a slave can be reported by the master `INFO` output and `ROLE` command as having arbitrary IP and port. This allows to have Sentinel deployments when working with containers or NAT-ed environments more easily.
- The RDB check utlity is now part of Redis and uses the same RDB code that Redis uses in order to load the dataset in memory, so a given version of Redis is always able to check the RDB it produced… without another external check tool which is supposed to be taken in sync with the rdb.c implementation. This in turn also means that the new RDB checking is able to spot more complex bugs, since it really loads the dataset instead of just skipping bytes.