redis3.0.3 安装与配置
看到redis3版本已出最新 3.0.3 測試了一下它的集群功能。
1.安裝:
?? ?$ wget http://download.redis.io/releases/redis-3.0.3.tar.gz
?? ?$ tar xzf redis-3.0.3.tar.gz
?? ?$ cd redis-3.0.3
?? ?#支持包沒有,問題真多,安裝了gcc,tcl
?? ?[root@t1 redis-3.0.3]# ./runtest
?? ?You need tcl 8.5 or newer in order to run the Redis test
?? ?[root@t1 redis-3.0.3]# yum install tcl
?? ?已加載插件:fastestmirror, product-id, subscription-manager
?? ?Updating certificate-based repositories.
?? ?Unable to read consumer identity
?? ?設置安裝進程
?? ?Loading mirror speeds from cached hostfile
?? ?base?????????????????????????????????? ?
?? ?......
?? ?[root@t2 redis-3.0.3]# make
?? ?cd src && make all
?? ?make[1]: Entering directory `/opt/redis-3.0.3/src'
?? ?rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-dump redis-check-aof *.o *.gcda *.gcno *.gcov redis.info lcov-html
?? ?(cd ../deps && make distclean)
?? ?make[2]: Entering directory `/opt/redis-3.0.3/deps'
?? ?(cd hiredis && make clean) > /dev/null || true
?? ?(cd linenoise && make clean) > /dev/null || true
?? ?(cd lua && make clean) > /dev/null || true
?? ?(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true
?? ?(rm -f .make-*)
?? ?make[2]: Leaving directory `/opt/redis-3.0.3/deps'
?? ?(rm -f .make-*)
?? ?echo STD=-std=c99 -pedantic >> .make-settings
?? ?echo WARN=-Wall -W >> .make-settings
?? ?echo OPT=-O2 >> .make-settings
?? ?echo MALLOC=jemalloc >> .make-settings
?? ?echo CFLAGS= >> .make-settings
?? ?echo LDFLAGS= >> .make-settings
?? ?echo REDIS_CFLAGS= >> .make-settings
?? ?echo REDIS_LDFLAGS= >> .make-settings
?? ?echo PREV_FINAL_CFLAGS=-std=c99 -pedantic -Wall -W -O2 -g -ggdb?? -I../deps/hiredis -I../deps/linenoise -I../deps/lua/src -DUSE_JEMALLOC -I../deps/jemalloc/include >> .make-settings
?? ?echo PREV_FINAL_LDFLAGS=? -g -ggdb -rdynamic >> .make-settings
?? ?(cd ../deps && make hiredis linenoise lua jemalloc)
?? ?make[2]: Entering directory `/opt/redis-3.0.3/deps'
?? ?(cd hiredis && make clean) > /dev/null || true
?? ?(cd linenoise && make clean) > /dev/null || true
?? ?(cd lua && make clean) > /dev/null || true
?? ?(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true
?? ?(rm -f .make-*)
?? ?(echo "" > .make-ldflags)
?? ?(echo "" > .make-cflags)
?? ?MAKE hiredis
?? ?cd hiredis && make static
?? ?make[3]: Entering directory `/opt/redis-3.0.3/deps/hiredis'
?? ?gcc -std=c99 -pedantic -c -O3 -fPIC? -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb? net.c
?? ?make[3]: gcc:命令未找到
?? ?make[3]: *** [net.o] 錯誤 127
?? ?make[3]: Leaving directory `/opt/redis-3.0.3/deps/hiredis'
?? ?make[2]: *** [hiredis] 錯誤 2
?? ?make[2]: Leaving directory `/opt/redis-3.0.3/deps'
?? ?make[1]: [persist-settings] 錯誤 2 (忽略)
?? ??? ??? ?CC adlist.o
?? ?/bin/sh: cc: command not found
?? ?make[1]: *** [adlist.o] 錯誤 127
?? ?make[1]: Leaving directory `/opt/redis-3.0.3/src'
?? ?make: *** [all] 錯誤 2
?? ??? ?[root@t2 redis-3.0.3]# yum install gcc
?? ??? ?已加載插件:fastestmirror, product-id, subscription-manager
?? ??? ?Updating certificate-based repositories.
?? ??? ?Unable to read consumer identity
?? ??? ?設置安裝進程
?? ??? ?Repository base is listed more than once in the configuration
?? ??? ?Repository updates is listed more than once in the configuration
?? ??? ?Repository extras is listed more than once in the configuration
?? ??? ?Repository centosplus is listed more than once in the configuration
?? ??? ?Repository contrib is listed more than once in the configuration
?? ??? ?Loading mirror speeds from cached hostfile
?? ??? ? * base: ftp.sjtu.edu.cn
?? ??? ? * extras: mirrors.163.com
?? ??? ? * updates: centos.ustc.edu.cn
?? ?$ make
?? ?出錯:
?? ??? ?[root@t1 redis-3.0.3]# make
?? ??? ?cd src && make all
?? ??? ?make[1]: Entering directory `/opt/redis-3.0.3/src'
?? ??? ??? ?CC adlist.o
?? ??? ?在包含自 adlist.c:34 的文件中:
?? ??? ?zmalloc.h:50:31: 錯誤:jemalloc/jemalloc.h:沒有那個文件或目錄
?? ??? ?zmalloc.h:55:2: 錯誤:#error "Newer version of jemalloc required"
?? ??? ?make[1]: *** [adlist.o] 錯誤 1
?? ??? ?make[1]: Leaving directory `/opt/redis-3.0.3/src'
?? ??? ?make: *** [all] 錯誤 2
?? ??? ?解決:
?? ??? ??? ?To force compiling against libc malloc, use: ?
?? ??? ??? ?
?? ??? ??? ??? ?% make MALLOC=libc ?
?? ??? ?(錯誤解決URL:http://www.phperz.com/article/14/1219/42002.html)
2.配置
?? ?2.1、新建6個instance,3個master,3個slave;
?? ?1.?? ?192.168.2.188:6379?? ??? ?
?? ?2.?? ?192.168.2.188:6380
?? ?3.?? ?192.168.2.132:6379?? ??? ?
?? ?4.?? ?192.168.2.132:6380
?? ?5.?? ?192.168.2.134:6379?? ??? ?
?? ?6.?? ?192.168.2.134:6380
?? ?新建實例之前要改一下redis.conf的內容,先改端口號,再改下面的cluster配置項
?? ?# Accept connections on the specified port, default is 6379.
?? ?# If port 0 is specified Redis will not listen on a TCP socket.
?? ?port 6379
?? ?################################ REDIS CLUSTER ###############################
?? ?#
?? ?# Normal Redis instances can't be part of a Redis Cluster;only nodes that are
?? ?# started as cluster nodes can. In order to start a Redisinstance as a
?? ?# cluster node enable the cluster support uncommenting thefollowing:
?? ?#
?? ?cluster-enabled yes
?? ?# Every cluster node has a cluster configuration file. Thisfile is not
?? ?# intended to be edited by hand. It is created and updated byRedis nodes.
?? ?# Every Redis Cluster node requires a different clusterconfiguration file.
?? ?# Make sure that instances running in the same system does nothave
?? ?# overlapping cluster configuration file names.
?? ?#
?? ?cluster-config-file nodes-6379.conf
?? ?# Cluster node timeout is the amount of seconds a node must beunreachable
?? ?# for it to be considered in failure state.
?? ?# Most other internal time limits are multiplicators of thenode timeout.
?? ?#
?? ?cluster-node-timeout 15
?? ?# In order to setup your cluster make sure to read thedocumentation
?? ?# available at http://redis.io web site.
?? ?#復制配置文件,并修改port: 6380, cluster-config-file nodes-6380.conf
?? ?cp redis.conf redis2.conf
?? ?啟動6個實例:
?? ?[root@t1 redis-3.0.3]# src/redis-server redis.conf &
?? ?[root@t1 redis-3.0.3]# src/redis-server redis2.conf &
?? ?[root@t1 redis-3.0.3]# ps -ef|grep redis
?? ?root????? 3105? 2024? 0 14:36 pts/0??? 00:00:02 src/redis-server *:6379 [cluster]
?? ?root????? 3191? 2024? 0 15:04 pts/0??? 00:00:00 src/redis-server *:6380 [cluster]
?? ?root????? 3197? 2024? 0 15:04 pts/0??? 00:00:00 grep redis
?? ?[root@t2 redis-3.0.3]# src/redis-server redis.conf &
?? ?[root@t2 redis-3.0.3]# src/redis-server redis2.conf &
?? ?[root@t2 redis-3.0.3]# ps -ef|grep redis
?? ?root???? 26035 17602? 0 15:05 pts/2??? 00:00:00 src/redis-server *:6379 [cluster]
?? ?root???? 26043 17602? 0 15:05 pts/2??? 00:00:00 src/redis-server *:6380 [cluster]
?? ?root???? 26057 17602? 0 15:06 pts/2??? 00:00:00 grep redis
?? ?[root@localhost redis-3.0.3]# src/redis-server redis.conf &
?? ?[root@localhost redis-3.0.3]# src/redis-server redis2.conf &
?? ?[root@localhost redis-3.0.3]# ps -ef|grep redis
?? ?root????? 5689? 1249? 0 15:08 pts/0??? 00:00:00 src/redis-server *:6379 [cluster]
?? ?root????? 5692? 1249? 0 15:08 pts/0??? 00:00:00 src/redis-server *:6380 [cluster]
?? ?root????? 5696? 1249? 0 15:08 pts/0??? 00:00:00 grep redis
?? ?2.2 建立集群:
?? ??? ?2.2.1 安裝ruby 及 rubygems,
?? ?[root@t1 redis-3.0.3]# yum install ruby
?? ?[root@t1 redis-3.0.3]# yum install rubygems
?? ?[root@t1 redis-3.0.3]# gem install redis?? ?#安裝ruby 的redis 接口支持包
?? ?2.2.2 測試是否能連接上其它服務器的redis-server
?? ?[root@t1 redis-3.0.3]# src/redis-cli -h 192.168.2.134 -p 6379
?? ?Could not connect to Redis at 192.168.2.134:6379: No route to host
?? ?not connected> exit
?? ?
?? ?2.2.3 關閉其它服務器中的防火墻
?? ?[root@t2 redis-3.0.3]# chkconfig iptables off
?? ?[root@t2 redis-3.0.3]# service iptables stop
?? ?iptables:清除防火墻規則:???????????????????????????????? [確定]
?? ?iptables:將鏈設置為政策 ACCEPT:filter??????????????????? [確定]
?? ?iptables:正在卸載模塊:?????????????????????????????????? [確定]
?? ?2.2.4 建立集群:
?? ?[root@t1 redis-3.0.3]# src/redis-trib.rb create --replicas 1 192.168.2.188:6379 192.168.2.188:6380 192.168.2.132:6379 192.168.2.132:6380 192.168.2.134:6379 192.168.2.134:6380
?? ?>>> Creating cluster
?? ?Connecting to node 192.168.2.188:6379: OK
?? ?Connecting to node 192.168.2.188:6380: OK
?? ?Connecting to node 192.168.2.132:6379: OK
?? ?Connecting to node 192.168.2.132:6380: OK
?? ?Connecting to node 192.168.2.134:6379: OK
?? ?Connecting to node 192.168.2.134:6380: OK
?? ?>>> Performing hash slots allocation on 6 nodes...
?? ?Using 3 masters:
?? ?192.168.2.134:6379
?? ?192.168.2.132:6379
?? ?192.168.2.188:6379
?? ?Adding replica 192.168.2.132:6380 to 192.168.2.134:6379
?? ?Adding replica 192.168.2.134:6380 to 192.168.2.132:6379
?? ?Adding replica 192.168.2.188:6380 to 192.168.2.188:6379
?? ?M: 811daf9b3f895bf891c65cee5b8e70a9f8fd4c8a 192.168.2.188:6379
?? ??? ? slots:10923-16383 (5461 slots) master
?? ?S: 902fd7e670ece8f4b993b930e1619d3e5ee89b0f 192.168.2.188:6380
?? ??? ? replicates 811daf9b3f895bf891c65cee5b8e70a9f8fd4c8a
?? ?M: cc6c9301a0fc8e97ce7c00bb13529552323f6f60 192.168.2.132:6379
?? ??? ? slots:5461-10922 (5462 slots) master
?? ?S: b55836ddfeb279b4cab60faec8ec53acf0da075e 192.168.2.132:6380
?? ??? ? replicates 9d296647ae6cac139a817d46ab3efef50290def8
?? ?M: 9d296647ae6cac139a817d46ab3efef50290def8 192.168.2.134:6379
?? ??? ? slots:0-5460 (5461 slots) master
?? ?S: 91cab39311b0bd69ccf5de9608778d271064e087 192.168.2.134:6380
?? ??? ? replicates cc6c9301a0fc8e97ce7c00bb13529552323f6f60
?? ?Can I set the above configuration? (type 'yes' to accept): yes
?? ?>>> Nodes configuration updated
?? ?#查看 集群信息
?? ?[root@t1 redis-3.0.3]# src/redis-cli -p 6379
?? ?127.0.0.1:6379> cluster info
?? ?cluster_state:ok
?? ?cluster_slots_assigned:16384
?? ?cluster_slots_ok:16384
?? ?cluster_slots_pfail:0
?? ?cluster_slots_fail:0
?? ?cluster_known_nodes:6
?? ?cluster_size:3
?? ?cluster_current_epoch:6
?? ?cluster_my_epoch:1
?? ?cluster_stats_messages_sent:1305
?? ?cluster_stats_messages_received:1305
?? ?127.0.0.1:6379>
?? ?
?? ?127.0.0.1:6379> set hello tang
?? ?OK
?? ?127.0.0.1:6379> keys *
?? ?1) "hello"
?? ?127.0.0.1:6379> set user_id 1234
?? ?OK
?? ?127.0.0.1:6379> keys *
?? ?1) "user_id"
?? ?2) "hello"
?? ?127.0.0.1:6379> get user_id
?? ?"1234"
?? ?127.0.0.1:6379>
?? ?[root@t2 redis-3.0.3]# src/redis-cli -p 6380
?? ?127.0.0.1:6380> keys *
?? ?1) "user_id"
?? ?2) "hello"
?? ?127.0.0.1:6380> get user_id
?? ?(error) MOVED 3139 192.168.2.134:6379
?? ?127.0.0.1:6380> get hello
?? ?(error) MOVED 866 192.168.2.134:6379
?? ?127.0.0.1:6380> keys *
?? ?1) "user_id"
?? ?2) "hello"
?? ?127.0.0.1:6380> exit
?? ?#當使用參數 -c 登錄后,會自動取到其它節點中的數據
?? ?[root@t2 redis-3.0.3]# src/redis-cli -c -p 6380
?? ?127.0.0.1:6380> get user_id
?? ?-> Redirected to slot [3139] located at 192.168.2.134:6379
?? ?"1234"
?? ?192.168.2.134:6379> get hello
?? ?"tang"
?? ?192.168.2.134:6379> keys *
?? ?1) "user_id"
?? ?2) "hello"
?? ?192.168.2.134:6379> get year
?? ?-> Redirected to slot [10071] located at 192.168.2.132:6379
?? ?"2015"
?? ?192.168.2.132:6379> get month
?? ?"08"
?? ?192.168.2.132:6379> get day
?? ?-> Redirected to slot [4110] located at 192.168.2.134:6379
?? ?(nil)
?? ?192.168.2.134:6379>
總結
以上是生活随笔為你收集整理的redis3.0.3 安装与配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 测试一个config server 服务
- 下一篇: Aerospike NoSQL 数据库介