非root账号,redis安装,主从以及sentinel热备的使用

版本: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

扫描二维码关注公众号,回复: 10721691 查看本文章

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<String> sentinels = new HashSet<String>();
        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

以上!

发布了40 篇原创文章 · 获赞 26 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/guowujun321/article/details/86543582