Redis使用技巧

1. 区分业务

  1. 场景:前提为多业务使用的是同一个redis,多业务间用Redis,会出现很多缓存Key,根本没法知道哪些key是属于哪个业务的,如:KEY: user:1000、user:book、book、user:like:book、book:user;甚至会出现key冲突。
  2. 解决方案:就是强制在方法中,要开发人员赋予业务区分,每个业务都是在开发前,管理人员定下来的,这个管理就比较简单了。以业务简码作为redis key的前缀。

2. 优雅扩容

  1. 场景: 我们在开发web服务时,会用类似jedis客户端连接Redis服务器,会在配置文件中加入Redis集群地址。不过当系统遇到Redis负载太高,或者redis的数据需要扩容,就需要增加Redis服务器。这时就需要重新把配置文件中的Redis集群更改,再重启应用。
  2. 解决方案:原理比较简单,就是程序如果能够知道Redis集群地址产生了变化,重新设置一下jedis客户端的连接配置。现在的问题就是如何知道Redis集群地址发生了改变?
    我们可以采用把Redis的集群地址配置在zookeeper中,应用在启动的时候,获取zk上的集群地址的值,进行初始化。如果想要改变集群地址,要在zk上面进行设置。

3. 发现异常

  1. 场景:因为不同的业务,不同的团队,不同的开发人员在真实业务场景中,我们管理者是无法避免bug存在的,也无法预测线上会发生什么样的问题?如:发现Redis集群有不稳定情况,cpu负载非常高,那我们怎么知道是哪个业务导致的呢?
  2. 解决方案:
    1. 问题本质: 发现异常这个问题,其实就是一个监控的问题,我们需要把各个客户端使用Redis的情况进行监控。怎么监控? 需要一个监控工具,这个监控工具网上有几个,推荐使用小米的open-falcon
    2. redis使用:再使用Aop拦截Redis操作类,拦截Redis操作,把相关数据进行封装。每隔1分钟把这些数据上报到open-falcon平台中。具体监控什么数据,由业务决定,一般要把设置的key,业务,操作时长,哪个客户端IP发起的,都需要监控。在可以设置相关的报警规则,如:某个key一直被调用,在一段时间内操作次数太高。这样就可以方便排查哪些key导致cpu负载太高,就可以去看一下设置这个key的代码,有没有什么问题?是不是死循环等问题?

猜你喜欢

转载自blog.csdn.net/weixin_38608626/article/details/93713977