Redies4.0.6搭建(单版)
需要c/c++编译能力
sudo yum install gcc-c++
解压redies安装包
sudo tar –xzvf redies4.0.6.tar.gz
进入 redies4.0.6
cd redies4.0.6
安装redies到指定路径
sudo make install PREFIX=/usr/local/redies
然后进入到redies
cd /usr/local/redies
只有一个bin目录
将redies4.0.6中的redies.conf拷贝到/usr/local/redies/bin下
sudo cp –rredies.conf /usr/local/redies/bin
然后修改配置文件redies.conf
vi redies.conf
修改daemonize yes(原来为no)
然后可以后台运行redies服务
./redis-serverredis.conf
4.0.6版本会出现如下提示
然后可以运行客户端
./redis-cli
查看进程
ps aux|grep redis
Jedis连接Redis
当出现异常:Connection refused: connect
说明只允许本地127.0.0.1访问redies,所以需要修改redies.conf
#bind 127.0.0.1
然后又出现异常:DENIED Redis is running inprotected mode because protected mode is enabled…
说明需要使用密码访问,先客户端连接上然后配置密码或者修改配置文件protected-mode no
configset requirepass 密码
publicclass JdiesTest {
@Test
publicvoid add() {
Jedis jedis = new Jedis("192.168.254.136", 6379);
//在连接的时候需要添加密码认证
String auth = jedis.auth("123456");
String name = jedis.get("name");
System.out.println("name"+name);
jedis.close();
}
}
Redis集群搭建
创建安装目录
mkdirredis-cluster
复制Redis中的bin文件(创建六个连接点,备份三个,必须是奇数个才能达到投票机制)
cp -r redies/bin./redis-cluster/redis01
cp -r redies/bin./redis-cluster/redis02
cp -r redies/bin./redis-cluster/redis03
cp -r redies/bin./redis-cluster/redis04
cp -r redies/bin./redis-cluster/redis05
cp -r redies/bin./redis-cluster/redis06
如果bin目录下有dump.rdb(快照),删除此文件
rm –rf dump.rdb
编辑每个cluster的redis.conf配置文件修改端口和集群配置
port 10005
cluster-enable yes
安装ruby脚本环境
yum install ruby
安装依赖环境
gem install redis(这是下载最新版,可能会出现ruby版本过低,所以建议到官网下载低版本,此处使用了3.3.1版gem install redis3.3.1)
然后找到redis-trib.rb
cd /home/nhb/redis-4.0.6/src
拷贝此文件
cp –r redis-trib.rb /usr/local/redis-cluster
运行此脚本
./redis-trib.rb create –-replicas 1(一个备份机)192.168.254.136:10001 192.168.254.136:10002 192.168.254.136:10003 192.168.254.136:10004 192.168.254.136:10005 192.168.254.136:10006
如果出现[ERR] Sorry, can't connect to node说明需要更新最新版ruby ,不想更新可以把redis.conf中bind ip号
客户端连接集群
./redis-cli –p 端口号 –c(必须要加)
使用jedis测试
@Test
publicvoid addCluster() throws IOException {
JedisPoolConfig poolConfig = new JedisPoolConfig();
// 设置最大连接数
poolConfig.setMaxTotal(50);
// 定义集群信息
List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();
shards.add(new JedisShardInfo("192.168.254.136", 10001));
shards.add(new JedisShardInfo("192.168.254.136", 10002));
shards.add(new JedisShardInfo("192.168.254.136", 10003));
shards.add(new JedisShardInfo("192.168.254.136", 10004));
shards.add(new JedisShardInfo("192.168.254.136", 10005));
shards.add(new JedisShardInfo("192.168.254.136", 10006));
// 定义集群连接接
ShardedJedisPool shardedJedisPool = new ShardedJedisPool(poolConfig, shards);
ShardedJedis shardedJedis = null;
try {
// 从连接池中获取到jedis分片对象
shardedJedis = shardedJedisPool.getResource();
String value = shardedJedis.get("name");
System.out.println(value);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != shardedJedis) {
// 关闭,检测连接是否有效,有效则放回到连接池中,无效则重置状态
shardedJedis.close();
}
}
// 关闭连接池,正常使用的时候,不用关闭
shardedJedisPool.close();
}