版本:redis-4.0.8.tar.gz
非root账号,比如 xiaoming,那目录位置就是 /home/xiaoming/....
按以下顺序执行:
1.wget http://download.redis.io/releases/redis-4.0.8.tar.gz
2.tar xzvf redis-4.0.8.tar.gz
3.cd redis-4.0.8
4.make
因为是非root使用的,转移其他目录就先不管了。
这时候,目录下应该是这样的:
src目录里有执行文件,比如redis-server 服务,redis-cli 客户端,redis-sentinel 服务。
redis.conf ,sentinel.conf 这里有一系列配置信息。
一、安装好后,可以按以下步骤测试
1.进入redis根目录:cd redis-4.0.8/
2.执行: src/redis-server
3.另开终端:进入redis根目录,执行:src/redis-cli
然后测试下:
比如设置key1的值为value1:set key1 value1
然后获取:get key1
二、修改配置 redis.conf
我这暂时没设置密码,redis默认有些保护策略,先关掉保护。
执行:vi redis.conf
找到 bind 127.0.0.1,把它注释了:#bind 127.0.0.1
找到 protected-mode yes ,把它改为 :protected-mode no
ESC后,:wq退出
三、主从配置,这个很简单呐。
假如有192.168.1.1,192.168.1.2。这两台都已安装上redis,端口默认为6379
以192.168.1.1为主服务器,192.168.1.2 为从服务器。
此时只需再 2 服务器的redis.conf 的最后加上一句 slaveof 192.168.1.1 6379 即可实现主从。
四、热备
如果192.168.1.1 挂了,那我们当然希望192.168.1.2 能顶替上来。
redis 自带 Sentinel ,实现热备配置。
redis 根目录下,有个 sentinel.conf,
执行:vi sentinel.conf
1.找到 sentinel monitor mymaster 127.0.0.1 6379 2 ,替换为 sentinel monitor mymaster 192.168.1.1 6379 1 (两台服务器都改成这句)
2.找到 # protected-mode no 去掉#
3.重启redis服务,启动 sentinel
这里需要注意:
可以在 redis-cli里,执行shutdown命令,关闭redis,redis-server也会被同步关闭。
步骤:
1.进入redis-4.0.8:cd redis-4.0.8/
2.执行:src/redis-server redis.conf (一定要指定conf)
3.执行:src/redis-sentinel sentinel.conf (一定要指定conf)
4.执行:src/redis-cli (打开客户端)
五、通过java代码来测试
private static JedisSentinelPool pool = null;
static {
//加载配置文件
InputStream in = JedisPoolUtils.class.getClassLoader().getResourceAsStream("redis.properties");
Properties pro = new Properties();
try {
pro.load(in);
} catch (IOException e) {
e.printStackTrace();
}
Set sentinels = new HashSet();
String hostAndPort1 = "192.168.1.1:26379";
String hostAndPort2 = "192.168.1.2:26379";
sentinels.add(hostAndPort1);
sentinels.add(hostAndPort2);
String clusterName = "mymaster";
GenericObjectPoolConfig poolConfig=new GenericObjectPoolConfig();
poolConfig.setMaxIdle(Integer.parseInt(pro.get("redis.pool.maxIdle").toString()));//最大闲置个数
poolConfig.setMinIdle(Integer.parseInt(pro.get("redis.pool.minIdle").toString()));//最小闲置个数
poolConfig.setMaxTotal(Integer.parseInt(pro.get("redis.pool.maxTotal").toString()));//最大连接数
pool = new JedisSentinelPool(clusterName, sentinels,poolConfig);
}
//存值:
public static void setStringVal(String key,String value) {
try {
getJedis().set(key,value);
} catch (Exception e) {
e.printStackTrace();
}
}
//取值:
public static String getStringVal(String key){
try {
String val = getJedis().get(key);
return val;
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
public static void main(String[] args) {
setStringVal("key2", "red");
String value = getStringVal("key2");
System.out.println(value);
}
IP别写错,
redis.conf 里可以修改端口,默认是6379
sentinel.conf 里也可以修改端口,默认是26379
redis.properties配置
redis.pool.maxTotal=1024
redis.pool.maxIdle=200
redis.pool.minIdle=10
redis.pool.maxWaitMillis=1000
redis.pool.testOnBorrow=true
以上!