发布于 2016-07-29 08:26:21 | 79 次阅读 | 评论: 0 | 来源: 网友投递
Redis Key-Value数据库Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库，并提供多种语言的API。
Redis 3.2.2 发布了，
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.