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

SpringBoot与Redis高级应用
本文深入探讨SpringBoot结合Redis的高级用法,包括序列化方式调整、事务处理、Lua脚本、缓存策略及MongoDB操作技巧。涵盖StringRedisSerializer、ZSet、Pipeline、事务、Lua脚本执行、@Cacheable、@CachePut、@CacheEvict等核心知识点。
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”
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值