• 没有用spring-data-redis,封装了service层,针对罕用操作实现了get,set,delete,hasKey,hget,hset,hdelete,lpush,rpop,ttl,publish等办法
  • 实现了分布式锁,分布式计数器,get后立刻生效,集群环境下执行lua脚本的命令

    • 分布式锁:如果key在redis中存在,则获取失败返回false,否则设置该key及生效工夫,返回胜利。Redis操作为单线程,判断key是否存在及设置key应为一个原子操作,通过lua脚本实现。在分布式定时工作中抢锁执行定时工作有用到,定时工作在多个服务中启用,但同时只有抢到锁的那个服务能调用胜利,保障服务的冗余及同一时刻只有一个节点执行定时工作。
    • 分布式计数器:和分布式锁相似,如果key在redis中存在,则+1,否则设为1。该过程为原子操作。用于接口限流。
    • get后立刻生效:和分布式锁相似,如果key在redis中存在,则删除,返回true,否则返回false。用于用户登录时校验图片验证码,校验后验证码立刻生效,进步脚本防御的难度。
    • lua脚本执行办法。因为在集群环境下,key存储在不同节点,为确保lua脚本是一个原子操作,须要不同的key在同一节点执行。即lua脚本中的每个key前增加同一{xx},cluster分片时会依照xx进行hash分槽。
  • 反对同时连贯多个cluster,依据dbkey指定集群。为了将缓存隔离,搭建了多个redis集群,配置文件中通过dbkey辨别不同的集群。调用redisService办法时如果不指定dbkey则操作默认cluster,如果传入dbkey参数则操作指定cluster
  • 可按cluster增加对立前缀。因为测试环境分为sit,qa,uat,心愿应用同一套cluster,cluster没有单机db的概念,因而在配置cluster时,对立增加前缀sit,qa,uat进行辨别,调用redisService办法时主动增加。
  • 反对配置明码。可连贯配置和不配置明码的cluster,由配置文件决定