热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:SpringBoot整合Redis

篇首语:本文由编程笔记#小编为大家整理,主要介绍了SpringBoot--整合Redis相关的知识,希望对你有一定的参考价值。1.pom

篇首语:本文由编程笔记#小编为大家整理,主要介绍了SpringBoot-- 整合Redis相关的知识,希望对你有一定的参考价值。




1.pom依赖



<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-data-redisartifactId>
dependency>


2.application.properties配置


#redis数据库名称 从0到15,默认为db0
spring.redis.database=1
#redis服务器名称
spring.redis.host=127.0.0.1
#redis服务器密码
#spring.redis.password=123456
#redis服务器连接端口号
spring.redis.port=6379
#redis连接池设置
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.pool.max-active=8
spring.redis.pool.max-wait=-1
#spring.redis.sentinel.master=
#spring.redis.sentinel.nodes=
spring.redis.timeout=60000


3.将 五种数据类型 注入到 Srping中


package com.xsjt.redis;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.SetOperations;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.data.redis.core.ZSetOperations;
import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
/**
* ClassName:RedisConfig Date: 2017年11月14日 下午3:39:34
* 将 五种数据类型 注入到 Spring容器中
*
@author Joe
*
@version
*
@since JDK 1.8
* 参考地址:
https://www.cnblogs.com/skyessay/p/6485187.html
*/
@Configuration
public class RedisConfig {

// 注入 RedisConnectionFactory
@Autowired
private RedisConnectionFactory redisConnectionFactory;
@Bean
public RedisTemplate functionDomainRedisTemplate() {
RedisTemplate
redisTemplate = new RedisTemplate<>();
initDomainRedisTemplate(redisTemplate, redisConnectionFactory);
return redisTemplate;
}
/**
* 设置数据存入 redis 的序列化方式
*
@param redisTemplate
*
@param factory
*/
private void initDomainRedisTemplate(RedisTemplate redisTemplate, RedisConnectionFactory factory) {
redisTemplate.setKeySerializer(
new StringRedisSerializer());
redisTemplate.setHashKeySerializer(
new StringRedisSerializer());
redisTemplate.setHashValueSerializer(
new JdkSerializationRedisSerializer());
redisTemplate.setValueSerializer(
new JdkSerializationRedisSerializer());
redisTemplate.setConnectionFactory(factory);
}

/**
* 实例化 HashOperations 对象,可以使用 Hash 类型操作
*
@param redisTemplate
*
@return
*/
@Bean
public HashOperations hashOperations(RedisTemplate redisTemplate) {
return redisTemplate.opsForHash();
}
/**
* 实例化 ValueOperations 对象,可以使用 String 操作
*
@param redisTemplate
*
@return
*/
@Bean
public ValueOperations valueOperations(RedisTemplate redisTemplate) {
return redisTemplate.opsForValue();
}
/**
* 实例化 ListOperations 对象,可以使用 List 操作
*
@param redisTemplate
*
@return
*/
@Bean
public ListOperations listOperations(RedisTemplate redisTemplate) {
return redisTemplate.opsForList();
}
/**
* 实例化 SetOperations 对象,可以使用 Set 操作
*
@param redisTemplate
*
@return
*/
@Bean
public SetOperations setOperations(RedisTemplate redisTemplate) {
return redisTemplate.opsForSet();
}

/**
* 实例化 ZSetOperations 对象,可以使用 ZSet 操作
*
@param redisTemplate
*
@return
*/
@Bean
public ZSetOperations zSetOperations(RedisTemplate redisTemplate) {
return redisTemplate.opsForZSet();
}
}


4.封装String数据类型的方法


package com.xsjt.redis;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Component;
/**
* ClassName: StringRedisUtil
* String 数据类型
* date: 2017年11月14日 下午8:15:07
*
@author Joe
*
@version
*
@since JDK 1.8
*/
@Component(
"stringRedis")
public class StringRedisUtil {
@Autowired
private ValueOperations redisTemplate;

/**
* set:(保存数据).
*
@author Joe
* Date:2017年11月14日下午8:15:01
*
@param key
*
@param value
*/
public void set(String key, String value){
redisTemplate.set(key, value);
}

/**
* get:(得到数据).
*
@author Joe
* Date:2017年11月14日下午8:15:38
*
@param key
*
@return
*/
public Object get(String key) {
return redisTemplate.get(key);
}

// 可自行扩展其他方法
}


5.封装Hash数据类型的方法



package com.xsjt.redis;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
/**
* ClassName:HashRedisUtil Date: 2017年11月14日 下午8:17:47
* Hash 数据类型
*
@author Joe
*
@version
*
@param
*
@since JDK 1.8
*/
@Component(
"hashRedis")
public class HashRedisUtil {
@Autowired
protected RedisTemplate redisTemplate;
@Resource
protected HashOperations hashOperations;

/**
* put:(添加).
*
@param key
*
@param hashKey
*
@param doamin value
*
@param expire 过期时间(单位:秒),传入 -1 时表示不设置过期时间
*/
public void put(String key, String hashKey, T doamin, long expire) {
hashOperations.put(key, hashKey, doamin);
if (expire != -1) {
redisTemplate.expire(key, expire, TimeUnit.SECONDS);
}
}
/**
* remove:( 删除).
*
@param key
*
@param hashKey
*/
public void remove(String key, String hashKey) {
hashOperations.delete(key, hashKey);
}
/**
* get:(查询).
*
@param key
*
@param hashKey
*
@return
*/
public Object get(String key, String hashKey) {
return hashOperations.get(key, hashKey);
}
/**
* getAll:(获取当前redis库下所有对象).
*
@param key
*
@return
*/
public List getAll(String key) {
return hashOperations.values(key);
}
/**
* getKeys:(查询查询当前redis库下所有key).
*
@param key
*
@return
*/
public Set getKeys(String key) {
return hashOperations.keys(key);
}
/**
* isKeyExists:(判断key是否存在redis中).
*
@param key
*
@param hashKey
*
@return
*/
public boolean isKeyExists(String key, String hashKey) {
return hashOperations.hasKey(key, hashKey);
}
/**
* count:(查询当前key下缓存数量).
*
@param key
*
@return
*/
public long count(String key) {
return hashOperations.size(key);
}
}


View Code

 6.测试类


package com.xsjt.redis;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
/**
* ClassName:TestRedis
* Date: 2017年11月14日 下午8:09:54
*
@author Joe
*
@version
*
@since JDK 1.8
*/
@RunWith(SpringRunner.
class)
@SpringBootTest
public class TestRedis {

/********************************测试String***********************************/

@Autowired
private StringRedisUtil stringRedis;

@Test
public void setString() {
stringRedis.set(
"name", "张三");
}

@Test
public void getString() {
Object value
= stringRedis.get("name");
System.out.println(
"value=" + value);
}

/**********************************测试Hash************************************/

@Autowired
private HashRedisUtil hashRedisUtil;

@Test
public void setHash() {
hashRedisUtil.put(
"user", "userName", new Integer(6868), 5);
}

@Test
public void getHash() {
Integer a
= (Integer) hashRedisUtil.get("user", "userName");
System.out.println(
"a==" + a);
}
}


7.源码下载

  https://gitee.com/xbq168/spring-boot-learn

 



推荐阅读
author-avatar
$Array$
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有