Redis集群搭建教程
(一) 安装Redis
(1) Linux编译安装Redis
安装gcc(Ubuntu)
$sudo apt-get install build-essential
下载,提取,编译redis
$wget http://download.redis.io/releases/redis-4.0.9.tar.gz $tar xzf redis-4.0.9.tar.gz $cd redis-4.0.9 $make
进入redis-4.0.9/src目录下进行安装
$make install
建立两个文件夹放reids命令和配置文件
$mkdir -p /usr/local/reids/bin $mkdir -p /usr/local/reids/etc
将reids命令文件移到/usr/local/reids/bin
$mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-server redis-cli /usr/local/redis/bin
将redis配置文件复制到/usr/local/redis/etc
$cp ../redis.conf /usr/local/redis/etc/
修改配置文件,设置为后台启动
将/usr/local/redis/etc/reids.conf中的daemonize的值从no改为yes
启动redis并指定配置文件
$/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
查看redis是否启动成功
$ps -ef|grep redis
查看是否有redis服务或者查看端口
$netstat -tunpl|grep 6379
关闭redis
$pkill redis-server
$kill pid
$redis-cli shutdown
(2) Ubuntu直接安装Reids
$sudo apt-get update
$sudo apt-get install redis-server
(二) Redis伪集群搭建
redis集群需要至少要三个master节点,我们这里搭建创建一个具有3个master节点和3个slave节点的集群.
在/usr/local下创建文件夹redis-cluster,然后在其下面分别创建6个文件夾
$mkdir -p /usr/local/redis-cluster $cd /usr/local/redis-cluster $mkdir 6381 6382 6383 6384 6385 6386
将之前的redis.conf配置文件复制到6381下,并修改以下内容:
- daemonize yes
- port 6381 (对应端口)
- bind 192.168.1.114 (绑定当前机器ip)
- dir /usr/local/reids-cluster/6381/ (指定数据文件存放位置)
- cluster-enabled yes (启动集群模式)
- cluster-config-file nodes-6381.conf (文件命名最好和port对应上)
- cluster-node-timeout 5000
- appendonly yes
重复第2步,将6381/redis.conf配置文件复制到其余目录下,注意修改端口号
#vim中使用批量替换 :%s/原字符串/替换字符串/g
安装redis-trib
利用Redis Cluster命令行实用程序(redis-trib),向节点写入一些配置来创建我们的集群.redis-trib是一个Ruby程序,需要安装redis gem才能运行.
$sudo apt-get install ruby $sudo apt-get install rubygems-integration $sudo gem install redis
分别启动6个reids实例,并检查是否启动成功
$/usr/local/redis/bin/redis-server /usr/local/redis-cluster/638*/redis.conf $ps -ef|grep redis
进入redis-4.0.9/src目录下运行redis-trib.rb,创建群集
./redis-trib.rb create --replicas 1 192.168.1.114:6381 192.168.1.114:6382 192.168.1.114:6383 192.168.1.114:6384 192.168.1.114:6385 192.168.1.114:6386
create 创建一个新的集群
–replicas 1 意味每个主节点有一个从节点
6384是6381的从节点,…,6386是6383的从节点
运行命令后,Redis-trib会为你提供一个配置。输入yes即可接受建议的配置。
成功则会出现:
[OK] All 16384 slots covered
验证集群
$ redis-cli -c -h 192.168.1.114 -p 6381(-c表示集群模式) redis 192.168.1.114:6381> set foo bar -> Redirected to slot [12182] located at 192.168.1.114:6383 OK redis 192.168.1.114:7002> set hello world -> Redirected to slot [866] located at 192.168.1.114:6381 OK redis 192.168.1.114:6381> get foo -> Redirected to slot [12182] located at 192.168.1.114:6383 "bar" redis 192.168.1.114:6381> get hello -> Redirected to slot [866] located at 192.168.1.114:6381 "world" redis 192.168.1.114:6381> cluster info(查看集群信息) redis 192.168.1.114:6381> cluster nodes(查看节点列表)
(三) java操作redis集群
加入依赖
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
java访问redis集群
public static void main(String[] args) throws IOException { Set<HostAndPort> jedisClusterNode = new HashSet<>(); jedisClusterNode.add(new HastAndPost("192.168.1.114",6381)); jedisClusterNode.add(new HastAndPost("192.168.1.114",6382)); jedisClusterNode.add(new HastAndPost("192.168.1.114",6383)); jedisClusterNode.add(new HastAndPost("192.168.1.114",6384)); jedisClusterNode.add(new HastAndPost("192.168.1.114",6385)); jedisClusterNode.add(new HastAndPost("192.168.1.114",6386)); JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(100); config.setMaxIdle(10); config.setTestOnBorrow(true); JedisCluster jedisCluster = new JedisCluster(jedisClusterNode,6000,10,config); System.out.println(jedisCluster.set("foo","bar")); System.out.println(jedisCluster.set("hello","world")); System.out.println(jedisCluster.get("foo")); System.out.println(jedisCluster.get("hello")); jedisCluster.close(); }