服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - SpringBoot 整合Redis 数据库的方法

SpringBoot 整合Redis 数据库的方法

2021-04-16 11:51xiangzhihong8 Java教程

Redis是一个基于内存的日志型可持久化的缓存数据库,保存形式为key-value格式,Redis完全免费开源,它使用ANSI C语言编写。这篇文章主要介绍了SpringBoot 整合Redis 数据库的方法,需要的朋友可以参考下

redis简介

redis(官网: https://redis.io )是一个基于内存的日志型可持久化的缓存数据库,保存形式为key-value格式,redis完全免费开源,它使用ansi c语言编写。与其他的key - value缓存产品一样,redis具有以下三个特点。

• redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用;

• redis不仅支持简单的key-value类型数据,同时还提供字符串、链表、集合、有序集合和哈希等数据结构的存储;

• redis支持数据备份,即master-slave模式的数据备份。

SpringBoot 整合Redis 数据库的方法

在mac系统上,无需下载redis即可使用它,以下是从redis的托管服务器下载redis压缩包并解压的相关命令。

?
1
2
3
4
wget http://download.redis.io/releases/redis-4.0.8.tar.gz
tar xzf redis-4.0.8.tar.gz
cd redis-4.0.8
make

使用redis提供的服务之前,需要先启动redis相关的服务,在mac系统上启动redis的命令如下。

src/redis-server

SpringBoot 整合Redis 数据库的方法

然后,重新打开一个redis客户端,使用以下的命令来连接redis server。

?
1
2
3
4
5
src/redis-cli
redis> set foo bar
ok
redis> get foo
"bar"

SpringBoot 整合Redis 数据库的方法 

整合redis 数据库

使用redis之前需要引入相关依赖,maven方式依赖的脚本如下:

?
1
2
3
4
<dependency>
  <groupid>org.springframework.boot</groupid>
  <artifactid>spring-boot-starter-data-redis</artifactid>
</dependency>

之后我们把redis的相关配置写入yml,这里建议根据之前不同的环境写入不同的配置,redis默认使用的端口是6379,通常redis默认使用0号数据库,默认共有16个数据库:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#redis配置
 redis:
# 数据库索引
  database: 0
#  服务器地址
  host: 127.0.0.1
#  服务器连接端口
  port: 6379
#  链接密码
  password:
#  链接池
  pool:
#  最大连接数(负值表示没有限制)
   max-active: 8
#   最大阻塞等待时间(负值表示没有限制)
   max-wait: 1
#   最大空闲链接
   max-idle: 8
#   最小空闲链接
   min-idle: 0
#  链接超时时间(毫秒)
  timeout: 0

如果是application.properties方式,部分配置如下:

?
1
2
3
4
5
6
7
spring.redis.hostname=127.0.0.1
spring.redis.port=6379
spring.redis.pool.maxactive=8
spring.redis.pool.maxwait=-1
spring.redis.pool.maxidle=8
spring.redis.pool.minidle=0
spring.redis.timeout=0

新建redisconfig.java文件用来存放配置文件。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@configuration
@enablecaching//开启注解
public class redisconfig extends cachingconfigurersupport {
  @bean
  public cachemanager cachemanager(redistemplate<?,?> redistemplate) {
    cachemanager cachemanager = new rediscachemanager(redistemplate);
    return cachemanager;
  }
  @bean
  public redistemplate<string, string> redistemplate(redisconnectionfactory factory) {
    redistemplate<string, string> redistemplate = new redistemplate<string, string>();
    redistemplate.setconnectionfactory(factory);
    return redistemplate;
  }
}

在service包中建立一个redisservice.java类。

?
1
2
3
4
public interface redisservice {
  public void set(string key, object value);
  public object get(string key);
}

新建一个service实现类redisserviceimpl.java。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
@service
public class redisserviceimpl implements redisservice {
  @resource
  private redistemplate<string,object> redistemplate;
  public void set(string key, object value) {
    valueoperations<string,object> vo = redistemplate.opsforvalue();
     vo.set(key, value);
  }
  public object get(string key) {
    valueoperations<string,object> vo = redistemplate.opsforvalue();
    return vo.get(key);
  }
}

新建controller层代码usercontroller.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
@controller
@requestmapping(path="/user")
public class usercontroller {
  @autowired
  private userservice userservice;
  @autowired
  private redisservice redisservice;
  //从redis获取某个用户
  @requestmapping(value = "/getuserfromredis", method = requestmethod.get)
  public @responsebody user getredis(@requestparam string key) {
    return (user)redisservice.get(key);
  }
  //获取所有用户
  @requestmapping(value = "/getusers", method = requestmethod.get)
  public @responsebody page<user> list(model model, pageable pageable){
    return userservice.findall(pageable);
  }
  //添加用户
  @getmapping(value="/adduser")
  public @responsebody string adduser(@requestparam string dictum,
      @requestparam string password, @requestparam string username) {
    user user = new user();
    user.setdictum(dictum);
    user.setpassword(password);
    user.setusername(username);
    system.out.println(user);
    userservice.saveuser(user);
    redisservice.set(user.getid()+"", user);
    return "saved";
  }
}

本文设计的实体类user.java的代码如下,需要把对象存放在redis需要将对象序列化。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@entity
@table(name="s_user")
public class user implements serializable {
  private static final long serialversionuid = 1l;
  @id
  @generatedvalue(strategy=generationtype.auto)
  private integer id;
  private string username;
  private string password;
  private string dictum;
  @onetomany(mappedby = "user", fetch = fetchtype. lazy, cascade = {cascadetype. all})
  private set<photo> setphoto;
  //省略getter和setter
  @override
  public string tostring() {
    return "user [id=" + id + ", username=" + username + ", password="
        + password + ", dictum=" + dictum + ", setphoto=" + setphoto
        + "]";
  }
}

总结

以上所述是小编给大家介绍的springboot 整合redis 数据库的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!

原文链接:https://blog.csdn.net/xiangzhihong8/article/details/79709778

延伸 · 阅读

精彩推荐