一,SpringBoot关联NOSql数据库 Redis
Redis数据库安装 :
Redis数据库安装最好是在Linux的环境下,因为Redis数据库本身开发的软件只有Linux版本,windows环境下的redis是后期windows开发的,并不是十分的稳定。
安装十分简单 :
下载redis的安装包,将redis的存放路径在path环境变量中进行配置,以防在doc窗口中显示非命令错误。
运行 redis-server.exe redis.conf 就可以启动redis (这个窗口不要关) , 打开新的cmd窗口 , 到reids的存放路径下操作, 输入redis-cli.exe -h localhost
没有错误的话就差不多正确了,可以通过set和get命令读写看看是否正确地进行了操作!
SpringBoot操作Redis数据库的简单实例 :
<name>redisname>
<description>Demo project for Spring Bootdescription>
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>1.5.9.RELEASEversion>
<relativePath/>
parent>
<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
<java.version>1.8java.version>
properties>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starterartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-redisartifactId>
<version>1.4.7.RELEASEversion>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
plugin>
plugins>
build>
project>
我在导入jar包的时候一直出现这个jar包unknow的情况,修改下镜像为阿里云或者别的,或者你可以尝试修改redis jar包的版本号试试!,一般不会出错。
在application.properties文件中添加如下的配置:
# REDIS (RedisProperties)
# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis服务器地址
spring.redis.host=localhost
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.pool.max-idle=8
# 连接池中的最小空闲连接
spring.redis.pool.min-idle=0
# 连接超时时间(毫秒)
spring.redis.timeout=0
test文件中进行测试:
@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisApplicationTests {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Test
public void contextLoads() {
//保存字符串
stringRedisTemplate.opsForValue().set("key1","111");
//Assert.assertEquals("111",stringRedisTemplate.opsForValue().get("key1"));
System.out.print(stringRedisTemplate.opsForValue().get("key1"));
}
}
StringRedisTemplate对象能够对Redis进行读取操作,操作的类型为String,其实是相当于RedisTemplate
RedisTemplate对象也能够对Redis进行操作,操作对象,相当于RedisTemplate
特别需要注意的是: SpringBoot并不支持直接使用对象,这就需要我们自己实现 RedisSerializer 接口来对传入进来的对象
进行序列化和反序列化操作。
第一步: 创建实体类对象 (省略)
第二步: 实现对象的序列化接口
public class RedisObjectSerializer implements RedisSerializer
第三步: 配置针对实体类的RedisTemplate实例
@Configuration
public class RedisConfig {
@Bean
JedisConnectionFactory jedisConnectionFactory(){
return new JedisConnectionFactory();
}
@Bean
public RedisTemplate redisTemplate( RedisConnectionFactory factory){
RedisTemplate template = new RedisTemplate<>();
template.setConnectionFactory(jedisConnectionFactory());
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new RedisObjectSerializer());
return template;
}
}
第四步:编写测试类
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class RedisApplicationTests {
@Autowired
private RedisTemplate redisTemplate;
@Test
public void test(){
//保存对象
User user = new User("liang",22,"男");
redisTemplate.opsForValue().set(user.getName(),user);
user = new User("yunqing", 25,"男");
redisTemplate.opsForValue().set(user.getName(),user);
Assert.assertEquals(20,redisTemplate.opsForValue().get("liang").getName());
}
}