访问redis数据库
This commit is contained in:
Executable
+55
@@ -0,0 +1,55 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<groupId>com.didispace</groupId>
|
||||||
|
<artifactId>demo</artifactId>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>demo</name>
|
||||||
|
<description>Spring Boot project</description>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-parent</artifactId>
|
||||||
|
<version>1.3.2.RELEASE</version>
|
||||||
|
<relativePath/> <!-- lookup parent from repository -->
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<java.version>1.8</java.version>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-test</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-redis</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
|
||||||
|
</project>
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package com.didispace;
|
||||||
|
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
|
||||||
|
@SpringBootApplication
|
||||||
|
public class Application {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
SpringApplication.run(Application.class, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
package com.didispace;
|
||||||
|
|
||||||
|
import com.didispace.domain.User;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
||||||
|
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
|
||||||
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
|
import org.springframework.data.redis.serializer.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author 程序猿DD
|
||||||
|
* @version 1.0.0
|
||||||
|
* @date 16/4/15 下午3:19.
|
||||||
|
* @blog http://blog.didispace.com
|
||||||
|
*/
|
||||||
|
@Configuration
|
||||||
|
public class RedisConfig {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
JedisConnectionFactory jedisConnectionFactory() {
|
||||||
|
return new JedisConnectionFactory();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public RedisTemplate<String, User> redisTemplate(RedisConnectionFactory factory) {
|
||||||
|
RedisTemplate<String, User> template = new RedisTemplate<String, User>();
|
||||||
|
template.setConnectionFactory(jedisConnectionFactory());
|
||||||
|
template.setKeySerializer(new StringRedisSerializer());
|
||||||
|
template.setValueSerializer(new RedisObjectSerializer());
|
||||||
|
return template;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
package com.didispace;
|
||||||
|
|
||||||
|
import org.springframework.core.convert.converter.Converter;
|
||||||
|
import org.springframework.core.serializer.support.DeserializingConverter;
|
||||||
|
import org.springframework.core.serializer.support.SerializingConverter;
|
||||||
|
import org.springframework.data.redis.serializer.RedisSerializer;
|
||||||
|
import org.springframework.data.redis.serializer.SerializationException;
|
||||||
|
|
||||||
|
public class RedisObjectSerializer implements RedisSerializer<Object> {
|
||||||
|
|
||||||
|
private Converter<Object, byte[]> serializer = new SerializingConverter();
|
||||||
|
private Converter<byte[], Object> deserializer = new DeserializingConverter();
|
||||||
|
|
||||||
|
static final byte[] EMPTY_ARRAY = new byte[0];
|
||||||
|
|
||||||
|
public Object deserialize(byte[] bytes) {
|
||||||
|
if (isEmpty(bytes)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
return deserializer.convert(bytes);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
throw new SerializationException("Cannot deserialize", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] serialize(Object object) {
|
||||||
|
if (object == null) {
|
||||||
|
return EMPTY_ARRAY;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
return serializer.convert(object);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
return EMPTY_ARRAY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isEmpty(byte[] data) {
|
||||||
|
return (data == null || data.length == 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
package com.didispace.domain;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author 程序猿DD
|
||||||
|
* @version 1.0.0
|
||||||
|
* @date 16/4/15 下午1:58.
|
||||||
|
* @blog http://blog.didispace.com
|
||||||
|
*/
|
||||||
|
public class User implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -1L;
|
||||||
|
|
||||||
|
private String username;
|
||||||
|
private Integer age;
|
||||||
|
|
||||||
|
public User(String username, Integer age) {
|
||||||
|
this.username = username;
|
||||||
|
this.age = age;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUsername() {
|
||||||
|
return username;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUsername(String username) {
|
||||||
|
this.username = username;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getAge() {
|
||||||
|
return age;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAge(Integer age) {
|
||||||
|
this.age = age;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# 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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package com.didispace;
|
||||||
|
|
||||||
|
import com.didispace.domain.User;
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.boot.test.SpringApplicationConfiguration;
|
||||||
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||||
|
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||||
|
|
||||||
|
|
||||||
|
@RunWith(SpringJUnit4ClassRunner.class)
|
||||||
|
@SpringApplicationConfiguration(Application.class)
|
||||||
|
public class ApplicationTests {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private StringRedisTemplate stringRedisTemplate;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RedisTemplate<String, User> redisTemplate;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test() throws Exception {
|
||||||
|
|
||||||
|
// 保存字符串
|
||||||
|
stringRedisTemplate.opsForValue().set("aaa", "111");
|
||||||
|
Assert.assertEquals("111", stringRedisTemplate.opsForValue().get("aaa"));
|
||||||
|
|
||||||
|
// 保存对象
|
||||||
|
User user = new User("超人", 20);
|
||||||
|
redisTemplate.opsForValue().set(user.getUsername(), user);
|
||||||
|
|
||||||
|
user = new User("蝙蝠侠", 30);
|
||||||
|
redisTemplate.opsForValue().set(user.getUsername(), user);
|
||||||
|
|
||||||
|
user = new User("蜘蛛侠", 40);
|
||||||
|
redisTemplate.opsForValue().set(user.getUsername(), user);
|
||||||
|
|
||||||
|
Assert.assertEquals(20, redisTemplate.opsForValue().get("超人").getAge().longValue());
|
||||||
|
Assert.assertEquals(30, redisTemplate.opsForValue().get("蝙蝠侠").getAge().longValue());
|
||||||
|
Assert.assertEquals(40, redisTemplate.opsForValue().get("蜘蛛侠").getAge().longValue());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user