记阿里云安装redis踩过的坑

先不说问题...先走步骤:

1、先安装gcc

yum -y install gcc

redis的安装和使用步骤

https://redis.io/download

安装时小心翼翼的按照官网上面的步骤执行命令.
 

$ wget http://download.redis.io/releases/redis-5.0.4.tar.gz
$ tar xzf redis-5.0.4.tar.gz
$ cd redis-5.0.4
$ make
$ src/redis-server
$ src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"

然后

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

然后

ok正常执行完毕....然后在Java代码中调用Redis。(使用Jedis方式调用)

1、导包

<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>

2.测试代码 

package com.king.editor.redis;

import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;

import java.util.ArrayList;
import java.util.List;

/**
 * @Description
 * @Author HuHuanJin
 * @Date 2019-04-27 15:53
 */
public class RedisConfig {
    public static void main(String[] args) {
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxIdle(1000);//最大空闲时间
        config.setMaxWaitMillis(1000); //最大等待时间
        config.setMaxTotal(500); //redis池中最大对象个数

        JedisShardInfo sharInfo = new JedisShardInfo("47.105.175.98", 6379,1000);
        sharInfo.setPassword("a123456");
        List<JedisShardInfo> list = new ArrayList<JedisShardInfo>();
        list.add(sharInfo);
        ShardedJedisPool pool = new ShardedJedisPool(config, list);
        ShardedJedis jedis2 = pool.getResource();
        jedis2.set("mm", "meimei");
        System.out.println(jedis2.get("hhj"));
        System.out.println(jedis2.get("mm"));

    }
}

3.允许main 方法.验证猜想.结果

报错了.....我一脸懵逼..........怎么会不行呢?哪一步出错了?开始研究
1.第一时间查看报错信息:java.net.SocketTimeoutException: connect timed out

2.超时了.没有连接上服务?于是检查ip.端口,都没有问题啊.

3.id问题?.cmd 开始ping一下redis的ip.网络也是通的,(把防火墙关闭)

4.端口问题?telnet xx 6379 ,结果

不通哦....端口不对?通过端口确认,发现是端口不通 ,于是上网查一下,

https://my.oschina.net/yitiaoxianyu/blog/914176

 然后确定。再重启redis-server,就可以愉快的运行阿里云服务器上的redis了

到此.我非常开心.....马上去试了一下.又报错了

Caused by: redis.clients.jedis.exceptions.JedisDataException: 
DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, 

我踏马的....来气.明明已经改了redis.config文件了呀.redis.config没有修改生效?

经过一系列的查看,发现redis.config是确定被修改了.
问题是启动redis命令:
 

./src/redis-server &

这样启动没有引用指定redis.config......redis读取不到我修改的redis.config.
解决问题是启动redis命令:

./src/redis-server ./redis.conf &

在测试一下问题得解决!
 

在上述过程中,发现用kill -9 pid的形式杀进程,重启redis之后.之前set的数据不存在了...这里涉及到redis的持久化策略:

一种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),
一种是AOF(append only file)持久化(原理是将Reids的操作日志以追加的方式写入文件)。

具体配置.下一篇研究.............

猜你喜欢

转载自blog.csdn.net/hhj13978064496/article/details/89604550