1.定义注解package com.g2.order.server.annotation;import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/*** redis缓存注解* 仅支持方法*/ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface RedisCachetAttribute {/*** @return 缓存的key值* 对应的Method的返回值必须 实现...
阅读目录一、SpringBoot 整合 Redis1、简单回顾一下 Redis 2、SpringBoot 整合 Redis 缓存 3、整一个 Redis 常用工具类 RedisUtil.java二、SpringBoot 发送邮件1、简单了解一下基本概念 2、SpringBoot 发送邮件 (1) 相关博文地址:SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(一):搭建基本环境:https://www.cnblogs.com/l-y-h/p/12930895.html SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端...
中间件 什么是中间件 用户量增加时对应用程序做横向扩展的架构趋势,比如:MySQL读写分离或对MySQL表进行横向和纵向拆分。即将应用程序的单个节点拆分成多个节点,用户登录到不同节点后产生的连接session,通过采用中间一个共享的介质去存储多节点的会话。 企业级应用中常用的中间件主要是缓存和消息队列这两类,原因有以下几点: 随着业务规模增大,单体应用无法满足业务场景需求。用户数量剧增,单凭数据库无法抗住并发压力。业务...
本文主要讲解mall整合Redis的过程,以短信验证码的存储验证为例。Redis的安装和启动Redis是用C语言开发的一个高性能键值对数据库,可用于数据缓存,主要用于处理大量数据的高访问负载。下载Redis,下载地址:https://github.com/MicrosoftArchive/redis/releases下载完后解压到指定目录在当前地址栏输入cmd后,执行redis的启动命令:redis-server.exe redis.windows.conf整合Redis添加项目依赖在pom.xml中新增Redis相关依赖<!--redi...
最近领导要求在项目中加下mybatis二级缓存,由于当前项目是分布式微服务,且是多节点部署的,而司内缓存中间件使用的redis,那很自然的要用redis做分布式缓存支持,避免出现直接使用原生mybatis二级缓存造成缓存数据不一致等问题。下面会对基于redis的mybatis二级缓存实现做下简单介绍,涉及一些概念,同时一些坑点做下整理。 1. 一级缓存 一级缓存是在SqlSession级别的缓存,MyBatis默认开启一级缓存。即同一个SqlSession对象,相...
需求 好久没写文章啦,之前写的文章到现在也没有收尾,没办法,时间不多啊,旧坑没有填完就开始开新坑,最近项目组长说实现一个多级缓存,通常我们喜欢把cache放到redis里,可以把访问速度提升,但是redis也算是远程服务器,会有IO时间的开销,如果我们把缓存放在本地内存,性能能进一步提升,这也就带出了二级缓存概念。有人说为什么不把cache直接放到本地,如果是单机没问题,但是集群环境下还是需要两级缓存的配合。 缓存的获取...
因为目前做了一个基于Spring Cloud的微服务项目,所以了解到了OAuth2,打算整合一下OAuth2来实现统一授权。关于OAuth是一个关于授权的开放网络标准,目前的版本是2.0,这里我就不多做介绍了。下面贴一下我学习过程中参考的资料。开发环境:Windows10, Intellij Idea2018.2, jdk1.8, redis3.2.9, Spring Boot 2.0.2 Release, Spring Cloud Finchley.RC2 Spring 5.0.6项目目录eshop —— 父级工程,管理jar包版本eshop-serv...
开发过程中一些工具的安装使用笔记。。。。。 一、jenkins 安装部署项目(码云为例Gitee):参考:https://blog.csdn.net/shuizhihun07/article/details/80168076 1. 安装 jdk 、maven、git jenkins 并设置环境变量 2. 安装完成后启动: 首次启动报如下错误: Starting Jenkins bash: /usr/bin/java: No such file or directory 解决方法: 添加java依赖:修改/etc/init.d/jenkins 配置文件,在candidates 第一行加...
秒杀存在的问题: 1、短时间内大量请求发送到服务器,很可能会造成服务器崩溃; 2、商品超卖; 3、服务器响应时间过久(频繁读写数据库,耗时长),用户体验性差。 解决思路:1、为解决频繁读数据库问题以及减轻数据库压力,使用 Redis ,项目初始化时先将商品信息缓存起来,请求过来时先查Redis,根据商品库存做进一步处理。 2、使用 Redis 解决超卖问题; 3、使用RabbitMQ 实现 流量削峰 和 异步调用,即当我们从 Redis 中知道库...
栈 用LPUSH创建名为“stack”的key并放入元素,使用LRANGE查看放入的元素,使用LPOP取出放入的元素;可以发现取出的顺序与放入的顺序相反(先进后出),其特性与Java中的栈一样。 LPUSH stack q w e r t y u i o p LRANGE stack 0 -1 LPOP stack 队列 用LPUSH创建名为“queue”的key并放入元素,使用LRANGE查看放入的元素,使用RPOP取出放入的元素;可以发现取出的顺序与放入的顺序相同(先进先出),其特性与Java中的队列一样...
整数集合 整数集合(insert)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现。举个栗子,如果我们创建一个只包含五个元素的集合键,并且集合中的所有元素都是整数值,那么这个集合键的底层实现就会是整数集合:127.0.0.1:6379> SADD numbers 1 3 5 7 9 (integer) 5 127.0.0.1:6379> SMEMBERS numbers 1) "1" 2) "3" 3) "5" 4) "7" 5) "9" 127.0.0...
基于Redis实现的分布式锁Spring Cloud 分布式环境下,同一个服务都是部署在不同的机器上,这种情况无法像单体架构下数据一致性问题采用加锁就实现数据一致性问题,在高并发情况下,对于分布式架构显然是不合适的,针对这种情况我们就需要用到分布式锁了。哪些场景需要用分布式锁场景一:比较敏感的数据比如金额修改,同一时间只能有一个人操作,想象下2个人同时修改金额,一个加金额一个减金额,为了防止同时操作造成数据不一致,需...
1.容量问题hashmap是有最大容量的 2.时效问题redis可以持久化,也可以定时时间hashmap不可以持久化 3.线程并发问题hashmap不是线程安全的(并且:多线程同时调用hashMap的resize方法后,后续调用get方法时,可能进入死循环) 4.功能redis 有集群,自动保存,自动恢复,还有消息队列,还有跨语言调用。
一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式。利用redis这两种场景的消息队列都能够实现。 定义: 生产者消费者模式:生产者生产消息放到队列里,多个消费者同时监听队列,谁先抢到消息谁就会从队列中取走消息;即对于每个消息只能被最多一个消费者拥有。 发布者订阅者模式:发布者生产消息放到队列里,多个监听队列的消费者都会收到同一份消息;即正常情况下每个消费者收到的消...
shell脚本一键在线安装redis数据库(使用函数实现) 前面的文章给出了有关手工编译安装redis的流程,并且在模拟搭建redis集群时给出了在线安装redis的过程,于是就想着自己写好在线安装的redis脚本,本文主要使用shell函数来实现并且验证在线安装的过程,执行无误后就想着分享出来。 PS:系统环境为Centos7.4 脚本如下: #!/bin/bashfunction checkroot(){ if [ $UID -ne 0 ]thenecho "|---------------------------------------...