Increase size of range request in getrange

32 bit builds don't have a big enough long to capture
the same range as a 64 bit build.  If we use "long long"
we get proper size limits everywhere.

Also updates size of unsigned comparison to fit new size of `end`.

Fixes #1981
Return empty string if GETRANGE of empty string

Previously, GETRANGE of a key containing nothing ("")
would allocate a large (size_t)-1 return value causing
crashes on 32bit builds when it tried to allocate the
4 GB return string.
AOF loading: split handling of format errors from unexpected EOF.
Test AOF format error detection.
AOF ability to load truncated files.
Correct cleanup when aborting AOF loading.

Because of the new ability to start with a truncated AOF, we need
to correctly release all the memory on EOF error. Otherwise there is a
small leak, that is not really a problem, but causes a false positive in
the tests that detect memory leaks.
Make aof-load-truncated option actually configurable.
AOF tests fixed turning aof-load-truncated to no.

When aof-load-truncated option was introduced, with a default of "yes",
the past behavior of the server to abort with trunncated AOF changed, so
we need to explicitly configure the tests to abort with truncated AOF
by setting the option to no.
Tests for aof-load-truncated = yes.
sentinel: Decouple bind address from address sent to other sentinels

There are instances such as EC2 where the bind address is private
(behind a NAT) and cannot be accessible from WAN.

https://groups.google.com/d/msg/redis-db/PVVvjO4nMd0/P3oWC036v3cJ
Sentinel: announce ip/port changes + rewrite.

The original implementation was modified in order to allow to
selectively announce a different IP or port, and to rewrite the two
options in the config file after a rewrite.
Sentinel: clarify announce-ip/port options in sentinel.conf.
Sentinel: don't set announce-ip if is empty.
Limit the *SCAN command `dictScan` iterations

*SCAN will cause redis server to hang for seconds
after millions of keys was deleted by SCAN/DEL pairs
luaRedisGenericCommand() cached argv handling simplified.

As discussed in issue #1945.
Sentinel: fix computation of total number of votes.

The code to check the number of voters was never updated to follow the new
Sentinel specification, so the number of voters was computed using only
the set of Sentinels that provided a vote.

This means that there is a changing majority on partitions, even if
usually the issue is not triggered because of the configured quorum
check (what was broken was the other implicit check that requires anyway
half of the known sentinels to agree in order to start a failover).
Sentinel sentinelGetLeader() top comment improved.
redis.conf 添加注释
add yinggang_readme
今天开始 阅读和注释redis的源码
修复了latecny-patch的一个bug
正式开始阅读3.0版本的代码
Feels good.