常见的redis问题

常见的redis问题

redis操作命令
启动redis,后面的是配置文件地址,不加就是默认的配置文件

./redis-server /home/redis/conf/redis.conf

关闭redis,查pid等于2234,kill掉

ps -ef | grep redis
kill 2234

远程登录

./redis-cli -h 127.0.0.1 -p 6379
>auth password

1. 启动redis,Fatal error, can’t open config file

【问题原因】

  1. config文件名称错误,不存在这个配置文件
  2. 没有这个config文件的权限

【解决办法】
确定Redis启动时指定是哪个配置文件,存在吗?并确认存在还有读写权限

2. ERR Client sent AUTH, but no password is set

【问题原因】

  1. 配置文件没有设置密码,你却用密码登录
  2. 选错了配置文件,或者没选中指定的配置文件,以默认的配置文件启动了

【解决办法】
确认用的配置文件存在不?有没有配置密码?

【拓展】

  • 将protected-mode 修改为 no,默认为yes
    开启保护模式,开启保护模式又没有配置bind,将只能本地访问,其他的ip访问不了这个redis。
  • 将默认的bind 127.0.0.1注释掉,或改为0.0.0.0 允许外部访问。
  • 将daemonize 改为no 关闭守护进程方式启动,其实就是关闭后台启动,退出redis就关了,一般服务器都是yes,后台启动。
  • 配置redis密码,配置文件中加上requirepass 密码

3. 有很多aof的临时文件,占用磁盘太多

在这里插入图片描述

【问题原因】

内存不够导致aof重写失败,临时文件1失败创建临时文件2,一直反复失败导致生成大量重写失败的临时文件。
正常重写文件会在重写完成后改名覆盖掉之前的文件,这样就不会有临时文件长存。
【解决办法】
提升内存配置或者删掉无用的key,清理redis内存,让服务又充足的运行内存

4. redis数据有很多乱码\x0E\x005(奇怪的字符,其实是ASCII)

数据有很多ASCII码前缀

【问题原因】

这是因为RedisTemplate序列化方式不对,默认的是jdk,建议直接用StringRedisTemplate
【解决办法】

    private void setSerializer(RedisTemplate template) {
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        template.setKeySerializer(stringRedisSerializer);
        template.setValueSerializer(stringRedisSerializer);
        template.setHashValueSerializer(stringRedisSerializer);
        template.setHashKeySerializer(stringRedisSerializer);
    }

其实StringRedisTemplate就默认了的

public class StringRedisTemplate extends RedisTemplate<String, String> {
    public StringRedisTemplate() {
        this.setKeySerializer(RedisSerializer.string());
        this.setValueSerializer(RedisSerializer.string());
        this.setHashKeySerializer(RedisSerializer.string());
        this.setHashValueSerializer(RedisSerializer.string());
    }

    public StringRedisTemplate(RedisConnectionFactory connectionFactory) {
        this();
        this.setConnectionFactory(connectionFactory);
        this.afterPropertiesSet();
    }

    protected RedisConnection preProcessConnection(RedisConnection connection, boolean existingConnection) {
        return new DefaultStringRedisConnection(connection);
    }
}

使用后记得debug看是否生效!!!
使用后记得debug看是否生效!!!
使用后记得debug看是否生效!!!
我就是不生效,在使用前手动set
在这里插入图片描述

5. Redis错误(MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist )

【问题原因】
Redis配置为保存RDB数据库快照,不能持久化到硬盘。可能是磁盘满了或者读写权限的问题。简而言之就是Redis认为持久化出了问题。直接关了就可以。
【解决办法】

127.0.0.1:6379> LPOP  key
(error) MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. 
127.0.0.1:6379> config set stop-writes-on-bgsave-error no
OK
127.0.0.1:6379> LPOP  key
99
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用提到了Redis启动的闪退问题,引用介绍了两种启动Redis的方法,但都会导致闪退。下面我将总结一些常见Redis启动问题。 1. Redis配置错误:启动Redis时,如果配置文件有错误或者缺少必要的配置,可能会导致启动失败。可以检查redis.conf文件中的配置是否正确,并确保所有必要的配置项都被设置。 2. 端口被占用:如果Redis要使用的端口已经被其他程序占用,那么Redis启动时会失败。可以通过检查端口占用情况,或者修改Redis配置文件中的端口号来解决该问题。 3. 内存不足:Redis需要一定的内存来运行,如果系统内存不足,可能会导致Redis启动失败。可以通过增加系统内存或者减少Redis的内存使用来解决该问题。 4. 权限问题:如果Redis的执行文件或者配置文件没有足够的权限,可能会导致启动失败。可以检查文件的权限设置,并确保Redis所在的目录对当前用户有足够的访问权限。 5. 版本兼容性问题:在某些情况下,Redis的版本与操作系统或其他依赖软件之间存在兼容性问题,可能会导致启动失败。可以尝试升级或降级Redis版本,或者解决相关的依赖冲突来解决该问题。 需要注意的是,这只是一些常见Redis启动问题,具体问题可能因环境和配置的不同而有所差异。如果还遇到其他问题,建议查看Redis的文档或社区中的解决方案,或者尝试搜索类似的问题和解决方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [windows下Redis启动闪退问题解决经验汇总](https://blog.csdn.net/httpmc2018/article/details/121082182)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [redis 常见问题](https://blog.csdn.net/u013743253/article/details/124093790)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值