Redis 集群方案- 主从切换测试
大约一年多前,公司同事开始使用Redis,不清楚是配置,还是版本的问题,当时的Redis经常在使用一段时间后,连接爆满且不释放。印象中,Redis 2.4.8以下的版本由于设计上的主从库同步问题,就会导致整个问题,不知是否确为这个Bug所致。但从那以后,我就很少敢去尝试使用Redis。曾想转投MongoDB,但公司同事给我的回复是,由于MongoDB宕机,数据丢失,公司损失惨重。于是,我一直停留在Memcached使用范畴,且用的还比较一般。由于前段时间使用Kestrel,同时要操作Memcached及时更新缓存,又要操作database,持久化数据。 貌似Redis既可以当Cache又可以当Queue!于是,今天开始研究Redis!
一、Redis简要介绍
Redis —— REmote DIctionary Server,可以直接理解为远程字典服务,也就是基于Key-Value模式Memcached+Database Persistence。
如果真要把Redis与Memcached进行对比,参考下图:
使用Memcached,让我感触颇深的是Object Size的问题,由于SQL未作优化直接映射对象,导致缓存对象大于1MB,Memcached就抛了异常。而Redis默认缓存对象512MB,最大支持1GB。至少在缓存对象时,可以有更大的伸缩空间了! 此外,是数据类型。Memcached比较简单,而Redis可以支持更多复杂的数据类型,如HASH、SET、SortedSet等等。
PS:Memcached是在Server端实现的Sharding,Redis没有对应的实现,据说3.0系列开始支持,不过这话貌似说了2年之久。
二、安装 Redis装起来,实在是过于简单,让我几乎“无从下手”。因为连“configure”文件都不需要,你只需要做个“make”就好。
在这里下载Redis最新版,这里用Redis 2.4.16
下载&解压:
Shell代码
[*]wget http://redis.googlecode.com/files/redis-2.4.16.tar.gz
[*]tar zxvf redis-2.4.16.tar.gz
Redis可以解压至任何目录,一个make安装即可获得执行、配置文件。
安装(这里将redis解压到/opt/目录下):
Shell代码
[*]cd /opt/redis-2.4.16
[*]make
make之后,我们会得到以下可执行文件:
[*]redis-server:Redis服务器的daemon启动程序
[*]redis-cli:Redis命令行操作工具。或者通过telnet进行纯文本协议操作
[*]redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能
上述文件位于src目录下。
我习惯性的执行了make install,貌似我需要的可执行文件,安装到了/usr/local/bin:
引用
# make install
cd src && make install
make: Entering directory `/opt/software/redis-2.4.16/src'
MAKE hiredis
make: Entering directory `/opt/software/redis-2.4.16/deps/hiredis'
make: Nothing to be done for `static'.
make: Leaving directory `/opt/software/redis-2.4.16/deps/hiredis'
MAKE linenoise
make: Entering directory `/opt/software/redis-2.4.16/deps/linenoise'
make: “linenoise_example”是最新的。
make: Leaving directory `/opt/software/redis-2.4.16/deps/linenoise'
MAKE hiredis
make: Entering directory `/opt/software/redis-2.4.16/deps/hiredis'
make: Nothing to be done for `static'.
make: Leaving directory `/opt/software/redis-2.4.16/deps/hiredis'
LINK redis-benchmark
LINK redis-cli
Hint: To run 'make test' is a good idea ;)
mkdir -p /usr/local/bin
cp -pf redis-server /usr/local/bin
cp -pf redis-benchmark /usr/local/bin
cp -pf redis-cli /usr/local/bin
cp -pf redis-check-dump /usr/local/bin
cp -pf redis-check-aof /usr/local/bin
make: Leaving directory `/opt/software/redis-2.4.16/src'
这样,就不用我拷贝文件了。 意外收获!
此外,还会得到一个默认的配置文件——redis.conf。
最好,把它拷贝到固定的目录下,例如:/etc/redis/目录下!
Shell代码
[*]mkdir /etc/redis
[*]cp redis.conf /etc/redis
然后,我们就可以在任何路径下,直接启动Redis了!
三、运行
运行Redis:
Shell代码
[*]redis-server /etc/redis/redis.conf
引用
13 Aug 16:18:24 * Server started, Redis version 2.4.16
13 Aug 16:18:24 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
13 Aug 16:18:24 * The server is now ready to accept connections on port 6379
13 Aug 16:18:24 - 0 clients connected (0 slaves), 717544 bytes in use
四、测试
通过客户端命令redis-cli访问Redis
引用
# redis-cli
redis> set name zlex
OK
redis> get name
"zlex"
进行数据测试:
Shell代码
[*]redis-benchmark -l
这个测试会一直进行下去,直到你Ctrl+C:
====== PING (inline) ======
10000 requests completed in 0.12 seconds
50 parallel clients
3 bytes payload
keep alive: 1
99.31%
页:
[1]