深入浅出spring boot 2.x 03-redis&mongo【笔记】

redis

-springboot使用redistemplete,redistemplete默认使用jdkserializationredisserializer序列化,需要修改成stringredisserializer字符串序列化器

  • rediscallback接口比较底层,需要处理内容较多,可读性较差,不建议使用。
  • sessioncallback接口建议使用
  • springboot通过@postconstruc初始化方法
    加减操作需要使用jedis操作,map操作可使用boundhashoperations操作。
  • 最热门等实现,使用zset有序集合+score分数,spring提供了typedtuple接口
    批量执行redis命令可使用流水线来执行命令
redis事务
  • watch…multi…exec命令
  • multi开启事务,将以下命令加入队列,exec执行事务
  • 与批量执行sql一次提交一样,redis使用流水线(pipline)技术
lua脚本(提升计算能力)
  • redis在2.6以后提供了lua脚本,它保证了原子性,数据一致性和强大的计算能力。运行lua的两种方法:
    • 直接发送lua去redis服务器执行
    • 2先把lua发送给redis,返回sha1的32位编码,之后再发送sha1+即可
      使用此方法原因:如lua参数过长,比较依赖网络传输。此时网络传输速度跟不上redis运行速度,这样网络传输就成了redis的瓶颈
      • spring提供RedisScript接口,运行lua脚本
  • springboot配置redis缓存,spring.cache.主类加入@EnableCaching启动缓存
    • 注解@CachePut将方法结果存放到缓存
    • 注解@Cacheable先按条件查询,查询到数据返回。查询不到执行该方法,返回时将结果保存到缓存
    • @CacheEvict,通过键移出缓存
注意
  • 对于使用少,命中率底的场景,缓存用途不大,对于大量数据使用缓存,也得谨慎。
  • 使用缓存会出现脏数据问题,可以对实时性要求高的数据设置超时时间较短,对数据要求低的,可以设置超时时间较长
  • 可以自定义缓存管理器,每秒10w读写
mongodb

mongodb最接近关系数据库的nosql
特长:统计,按条件查询,分析数据

  • mongodbTemplate操作数据

    • 主键查询findbyid
    • 多条件查询
      criteria c= criteria.where(“username”).regix(username).and(“note”).regex(note):
      Query q=Query.Query©.limit(limit).skip(skip);
      find(q,User.class);
    • 删除remove(q,User.class);
    • updateFirst 只更新第一个文档
    • updateMulti 更新多个文档
  • springboot可以使用Jpa的mongo的接口 mongoRepository

    • 实体标注@Document,@Id
    • 扫描mongodb实体使用@EnableMongoRepositories
    • 自定义查询
      @Query
      或者接口名称+impl,springJpa会自动找到这个类作为接口方法实现。
      如果不是接口名称+impl需要在启动类的扫描接口中加入
      repositoryImplementationPostfix=“stuff”

猜你喜欢

转载自blog.csdn.net/i6725545/article/details/87860593