springboot怎么使用Redis作缓存

1.依赖与数据库设置

<
dependency>

<
groupId>
org.springframework.boot<
/groupId>

<
artifactId>
spring-boot-starter-data-redis<
/artifactId>

<
/dependency>

<
dependency>

<
groupId>
org.apache.commons<
/groupId>

<
artifactId>
commons-pool2<
/artifactId>

<
/dependency>

<
dependency>

<
groupId>
org.springframework.boot<
/groupId>

<
artifactId>
spring-boot-starter-web<
/artifactId>

<
/dependency>

<
dependency>

<
groupId>
org.springframework.session<
/groupId>

<
artifactId>
spring-session-data-redis<
/artifactId>

<
/dependency>

<
dependency>

<
groupId>
org.springframework.boot<
/groupId>

<
artifactId>
spring-boot-starter-test<
/artifactId>

<
scope>
test<
/scope>

<
/dependency>
spring.redis.database=0

spring.redis.host=localhost

spring.redis.port=6379

spring.redis.password=123 #自己的密码

spring.redis.lettuce.pool.max-active=8

spring.redis.lettuce.pool.max-wait=-1

spring.redis.lettuce.pool.max-idle=8

spring.redis.lettuce.pool.min-idle=0

2.redis和session配置

@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport{

@Bean
public KeyGenerator keyGenerator() {
return new KeyGenerator() {
@Override
public Object generate(Object target, Method method, Object... params) {
StringBuilder sb = new StringBuilder();

sb.append(target.getClass().getName());

sb.append(method.getName());

for (Object obj : params) {
sb.append(obj.toString());

}
return sb.toString();

}
};

}
}

@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 86400*30)
public class SessionConfig {
}

3.实体与controller层

public class User implements Serializable {

SpringBoot如何用Redis缓存提高应用性能



private static final long serialVersionUID = 1L;

private Long id;

private String userName;

private String password;

private String email;

private String nickname;

private String regTime;


public User() {
super();

}
public User(String email, String nickname, String password, String userName, String regTime) {
super();

this.email = email;

this.nickname = nickname;

this.password = password;

this.userName = userName;

this.regTime = regTime;

}

public Long getId() {
return id;

}

public void setId(Long id) {
this.id = id;

}

public String getUserName() {
return userName;

}

public void setUserName(String userName) {
this.userName = userName;

}

public String getPassword() {
return password;

}

public void setPassword(String password) {
this.password = password;

}

public String getEmail() {
return email;

}

public void setEmail(String email) {
this.email = email;

}

public String getNickname() {
return nickname;

}

public void setNickname(String nickname) {
this.nickname = nickname;

}

public String getRegTime() {
return regTime;

}

public void setRegTime(String regTime) {
this.regTime = regTime;

}

@Override
public String toString() {
return "
User{"
+
"
id="
+ id +
"
, userName="
"
+ userName + "
"
"
+
"
, password="
"
+ password + "
"
"
+
"
, email="
"
+ email + "
"
"
+
"
, nickname="
"
+ nickname + "
"
"
+
"
, regTime="
"
+ regTime + "
"
"
+
"
}"
;

}
} @RestController
public class UserController {

@RequestMapping("
/getUser"
)
@Cacheable(value="
user-key"
)
public User getUser() {
User user=new User("
aa@126.com"
, "
aa"
, "
aa123456"
, "
aa"
,"
123"
);

System.out.println("
测试缓存"
);

return user;

}


@RequestMapping("
/uid"
)
String uid(HttpSession session) {
UUID uid = (UUID) session.getAttribute("
uid"
);

if (uid == null) {
uid = UUID.randomUUID();

}
session.setAttribute("
uid"
, uid);

return session.getId();

}
}

4.运行

@SpringBootApplication
public class RedisApplication {

public static void main(String[] args) {
SpringApplication.run(RedisApplication.class, args);

}
}

运行结果:

同时也可以用专门的图形界面工具查看:



Redis作为一款高效、稳定的内存型数据库,被广泛应用于缓存、队列、分布式锁等领域。在SpringBoot开发中,通过Redis作为缓存,可以显著提升应用程序响应速度和并发处理能力。
1. 添加Redis依赖
首先在pom.xml中添加Redis依赖。可以通过Spring官方提供的spring-boot-starter-data-redis或Jedis等开源库来连接Redis。配置连接地址、端口等信息。
2. 配置Redis缓存
在应用中配置Redis缓存,可以使用SpringBoot提供的注解@Cacheable和@CacheEvict来实现缓存。
@Cacheable用于读取缓存,如果缓存中已经存在该数据,则直接返回缓存中的数据。如果不存在,则会执行方法并将返回的结果加入到缓存中。
@CacheEvict用于移除缓存,可以在方法执行前或执行后移除缓存,或者清空整个缓存。
3. 优化缓存策略
优化缓存策略可以进一步提高性能。可以使用Redis的Set和List等数据类型,来实现对缓存数据的高效存储和查询。
同时,可以加入缓存预热策略,提前将热门数据放入缓存中,减少初次访问的耗时。
4. 消息队列
除了缓存,Redis还可以作为消息队列来实现高效的异步处理。通过Redis的Pub/Sub模式,发布者将消息发送到特定的频道,订阅者可以订阅相应的频道,即可接受到消息,实现异步处理。
5. 分布式锁
在分布式系统中,要保证对于同一个资源的操作是串行的,可以借助Redis的分布式锁实现。通过setnx命令,将资源名作为key,对应的value设置为唯一标识,即可实现对某个资源的互斥访问。
6. Redis Sentinel
要保证高可用性,可以使用Redis Sentinel实现对Redis集群的监控和自动故障转移。当某一主节点宕机后,Sentinel会自动选举出新的主节点,维护整个集群的运作。
7. Redis Cluster
在数据量较大时,可以通过Redis Cluster实现分布式部署,将单一的Redis节点切分为多个节点,实现更好的并发和容错能力。
综上所述,Redis作为一款优秀的内存型数据库,可以为SpringBoot应用带来极大的性能提升。通过缓存、消息队列、分布式锁等功能,可以实现更加高效的数据访问和处理。