redis简介
redis(官网: https://redis.io )是一个基于内存的日志型可持久化的缓存数据库,保存形式为key-value格式,redis完全免费开源,它使用ansi c语言编写。与其他的key - value缓存产品一样,redis具有以下三个特点。
• redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用;
• redis不仅支持简单的key-value类型数据,同时还提供字符串、链表、集合、有序集合和哈希等数据结构的存储;
• redis支持数据备份,即master-slave模式的数据备份。
在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
然后,重新打开一个redis客户端,使用以下的命令来连接redis server。
1
2
3
4
5
|
src/redis-cli
redis> set foo bar
ok
redis> get foo
"bar"
|
整合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