千家信息网

迁Aliyun Redis遇到的坑分析

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,这篇文章主要介绍"迁Aliyun Redis遇到的坑分析",在日常操作中,相信很多人在迁Aliyun Redis遇到的坑分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答
千家信息网最后更新 2024年11月30日迁Aliyun Redis遇到的坑分析

这篇文章主要介绍"迁Aliyun Redis遇到的坑分析",在日常操作中,相信很多人在迁Aliyun Redis遇到的坑分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"迁Aliyun Redis遇到的坑分析"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

背景:

从自建 redis(CacheCloud)到迁移到 aliyun redis

1. 踩"坑"一

问题:
平常小伙伴们在项目中可能用到redis key expire nofity的场景(比如:处理延时任务等),但是发现迁移后 key 过期通知总是比未迁移之前的时间慢一个数量级(基本上分钟级别,社区版基本上秒级别),及时在很少的 key 情况也是一样的;之前也和 aliyun support 小伙伴沟通过,给出反馈都一个星期多了~
定位:
了解过 redis 的过期策略以及淘汰策略的小伙伴,应该都知道针对惰性删除测试,是遍历整个 db,随机选取 20 个 key(默认),淘汰;但是,aliyun redis(使用的是 4.x 版本)的默认 db 数是 256(社区版的是 16)
解决:
调整项目 redis db 数为16

2. 踩"坑"二

问题:
迁移后的 redis,在域名(aliyun redis 针对社区版的主从,哨兵,集群模式等暴露出一个域名)指向 ip 发生变化的时候,客户端通过域名访问的时候,依然解析指向的是老的 ip,导致连接不上 redis~
定位:
查看 JedisConnectionFactory 的源码可以发现(以集群为例),在初始化 afterPropertiesSet 时,已经将域名解析成对应的 ip 缓存起来了,故之后域名切换 ip 后,依然访问的是之前的 ip

private JedisCluster createCluster() {                JedisCluster cluster = createCluster(this.clusterConfig, getPoolConfig());                JedisClusterConnection.JedisClusterTopologyProvider topologyProvider = new JedisClusterConnection.JedisClusterTopologyProvider(cluster);                this.clusterCommandExecutor = new ClusterCommandExecutor(topologyProvider,                                new JedisClusterConnection.JedisClusterNodeResourceProvider(cluster, topologyProvider), EXCEPTION_TRANSLATION);                return cluster;        }

解决:
切换域名 ip 后重启服务

到此,关于"迁Aliyun Redis遇到的坑分析"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0