• 没有用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,由配置文件决定

吃水果毫不费力zz
7 声望0 粉丝

啦啦啦


引用和评论

0 条评论