Spring boot整合redis單節點

1、在pom文件中添加redis依賴

<code><dependency>
\t\t\t<groupid>org.springframework.boot/<groupid>

\t\t\t<artifactid>spring-boot-starter-data-redis/<artifactid>
\t/<dependency>/<code>

2、在配置文件中添加配置

<code># 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=1000/<code>

注入RedisTemplate 或者StringRedisTemplate 即可直接使用

使用StringRedisTemplate示例

StringRedisTemplate 繼承了 RedisTemplate<string> 所以key、value都是字符串類型的,key、value都是使用StringRedisSerializer進行序列化的/<string>

<code>public StringRedisTemplate() {
\t\tRedisSerializer<string> stringSerializer = new StringRedisSerializer();
\t\tsetKeySerializer(stringSerializer);
\t\tsetValueSerializer(stringSerializer);

\t\tsetHashKeySerializer(stringSerializer);
\t\tsetHashValueSerializer(stringSerializer);
\t}/<string>/<code>

StringRedisTemplate 使用示例:

在測試類中注入:

<code> @Autowired
StringRedisTemplate stringRedisTemplate;/<code>

測試方法中:

<code>@Test
public void testStringRedisTemplate() throws Exception {
stringRedisTemplate.opsForValue().set("age","22");
System.out.println(stringRedisTemplate.opsForValue().get("age"));
}/<code>

RedisTemplate 使用示例:

在測試類中注入:

<code>@Autowired
RedisTemplate redisTemplate;/<code>

測試方法中:

<code>Test
public void testredisTemplate() throws Exception {
/*RedisTemplate 需要自己序列化,默認的 JdkSerializationRedisSerializer 存到數據中的是二進制的*/
redisTemplate.opsForValue().set("aaa",121);
System.out.println(redisTemplate.opsForValue().get("aaa"));
}/<code>

這樣存儲到redis中的key、value都是被序列化成了二進制的,可自己配置序列化方式,參考如下:

<code>@Configuration
public class RedisConfig{

@Bean

@ConditionalOnMissingBean(name = "redisTemplate")
public RedisTemplate<object> redisTemplate(
RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
RedisTemplate<object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
template.setDefaultSerializer(new GenericJackson2JsonRedisSerializer());
return template;
}
}/<object>/<object>/<code>

再次執行上面的測試方法會發現不是二進制的了。

使用RedisTemplate存儲對象:

1、首先在pom中添加依賴:

<code>
ependency>
\t\t\t<groupid>com.fasterxml.jackson.core/<groupid>
\t\t\t<artifactid>jackson-databind/<artifactid>
\t\t/<code>

2、新建User類實現Serializable:

<code>public class User implements Serializable {

private Integer id;
private String name;
private Integer age;
//省略get、set方法,toString方法,構造方法
}/<code>

3、添加測試方法

<code>    @Test   public void testredisTemplate() throws Exception {
redisTemplate.opsForValue().set("user",new User(1,"fangzy",20));
System.out.println(redisTemplate.opsForValue().get("user"));
}/<code>

存到redis中的數據是json格式的

{“@class”:”cn.com.example.domain.User”,”id”:1,”name”:”fangzy”,”age”:20} 可直接強轉User對象


分享到:


相關文章: