博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot+Redis整合
阅读量:6096 次
发布时间:2019-06-20

本文共 9043 字,大约阅读时间需要 30 分钟。

SpringBoot+Redis整合

 

1.在pom.xml添加Redis依赖

org.springframework.boot
spring-boot-starter-data-redis
redis.clients
jedis
2.9.0

 

2.在application.yml配置Redis

#引入Redis 安装在Linuxjedis :  pool :    host : 192.168.13.128    port : 6379    password: 123456    timeout: 10000    config :      maxTotal: 100      maxIdle: 10      maxWaitMillis : 100000

  

 

3.在Resources添加redis.properties

#redis配置开始# Redis数据库索引(默认为0)spring.redis.database=0# Redis服务器地址spring.redis.host=192.168.13.128# Redis服务器连接端口spring.redis.port=6379# Redis服务器连接密码(默认为空)spring.redis.password=123456# 连接池最大连接数(使用负值表示没有限制)spring.redis.jedis.pool.max-active=1024# 连接池最大阻塞等待时间(使用负值表示没有限制)spring.redis.jedis.pool.max-wait=10000# 连接池中的最大空闲连接spring.redis.jedis.pool.max-idle=200# 连接池中的最小空闲连接spring.redis.jedis.pool.min-idle=0# 连接超时时间(毫秒)spring.redis.timeout=10000#redis配置结束spring.redis.block-when-exhausted=true

  

4.配置RedisConfiguration.java类,自动注入

@Configuration@PropertySource("classpath:redis.properties")public class RedisConfiguration {    @Value("${spring.redis.host}")    private String host;    @Value("${spring.redis.port}")    private int port;    @Value("${spring.redis.timeout}")    private int timeout;    @Value("${spring.redis.jedis.pool.max-idle}")    private int maxIdle;    @Value("${spring.redis.jedis.pool.max-wait}")    private long maxWaitMillis;    @Value("${spring.redis.password}")    private String password;    @Value("${spring.redis.block-when-exhausted}")    private boolean  blockWhenExhausted;    @Bean    public JedisPool redisPoolFactory()  throws Exception{        System.out.println("JedisPool注入成功!!");        System.out.println("redis地址:" + host + ":" + port);        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();        jedisPoolConfig.setMaxIdle(maxIdle);        jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);        // 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true        jedisPoolConfig.setBlockWhenExhausted(blockWhenExhausted);        // 是否启用pool的jmx管理功能, 默认true        jedisPoolConfig.setJmxEnabled(true);        JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout, password);        return jedisPool;    }}
View Code

 

5.配置Util类:序列化类SerializeUtil,参数静态类RedisConstants,Redis基础操作类RedisUtil

public class SerializeUtil {    public static byte[] serialize(Object object) {        ObjectOutputStream oos = null;        ByteArrayOutputStream baos = null;        try {//序列化            baos = new ByteArrayOutputStream();            oos = new ObjectOutputStream(baos);            oos.writeObject(object);            byte[] bytes = baos.toByteArray();            return bytes;        } catch (Exception e) {        }        return null;    }    public static Object unserialize(byte[] bytes) {        ByteArrayInputStream bais = null;        try {//反序列化            bais = new ByteArrayInputStream(bytes);            ObjectInputStream ois = new ObjectInputStream(bais);            return ois.readObject();        } catch (Exception e) {        }        return null;    }    /**     * 序列化 list 集合     *     * @param list     * @return     */    public static byte[] serializeList(List
list) throws Exception { if (list == null || list.size() == 0) { return null; } ObjectOutputStream oos = null; ByteArrayOutputStream baos = null; byte[] bytes = null; try { baos = new ByteArrayOutputStream(); oos = new ObjectOutputStream(baos); for (Object obj : list) { oos.writeObject(obj); } bytes = baos.toByteArray(); } catch (Exception e) { e.printStackTrace(); } finally { close(oos); close(baos); } return bytes; } /** * 反序列化 list 集合 * * @param * @return */ public static List
unserializeList(byte[] bytes) throws Exception { if (bytes == null) { return null; } List list = new ArrayList(); ByteArrayInputStream bais = null; ObjectInputStream ois = null; try { // 反序列化 bais = new ByteArrayInputStream(bytes); ois = new ObjectInputStream(bais); while (bais.available() > 0) { Object obj = (Object) ois.readObject(); if (obj == null) { break; } list.add(obj); } } catch (Exception e) { e.printStackTrace(); } finally { close(bais); close(ois); } return list; }}
View Code
public class RedisConstants {    public static final String spilt=":";    /**     * redis库0  保存档案树     */    public static final Integer datebase0=0;    /**     * redis库1  保存档案树     */    public static final Integer datebase1=1;    /**     * 1.redis库2 保存档案表格     * 2.保存分页码     */    public static final Integer datebase2=2;    /**     * redis库3 保存档案image url     */    public static final Integer datebase3=3;    /**     * 1.redis库4 保存手机验证码     *     */    public static final Integer datebase4=4;    /**     * redis库5 保存身份认证信息     */    public static final Integer datebase5=5;    /**     * redis库6 记录身份认证次数     */    public static final Integer datebase6=6;    /**     * redis库7 记录重发次数     */    public static final Integer datebase7=7;    /**     * redis库8 记录任务参数     */    public static final Integer datebase8=8;    public RedisConstants() {    }}
View Code
@Component//@Slf4jpublic class RedisUtil {    private static  final Log log= LogFactory.getLog(RedisUtil.class);    @Autowired    private JedisPool jedisPool;    public RedisUtil() {    }    /**     * 

* 通过key获取储存在redis中的value *

*

* 并释放连接 *

* * @param key * @param indexdb 选择redis库 0-15 * @return 成功返回value 失败返回null */ public String get(String key,int indexdb) { Jedis jedis = null; String value = null; try { jedis = jedisPool.getResource(); jedis.select(indexdb); value = jedis.get(key); System.out.println(value); // log.info(value); } catch (Exception e) { log.error(e.getMessage()); } finally { returnResource(jedisPool, jedis); } return value; } /** *

* 通过key获取储存在redis中的value *

*

* 并释放连接 *

* * @param key * @param indexdb 选择redis库 0-15 * @return 成功返回value 失败返回null */ public byte[] get(byte[] key,int indexdb) { Jedis jedis = null; byte[] value = null; try { jedis = jedisPool.getResource(); jedis.select(indexdb); value = jedis.get(key); } catch (Exception e) { log.error(e.getMessage()); } finally { returnResource(jedisPool, jedis); } return value; }}
View Code

 

6.在Controller添加操作类RedisController

@Controller@RequestMapping(value="/redis")public class RedisController{    @Autowired    RedisUtil redisUtil;    @Autowired    AccountService accountService;    @RequestMapping(value = "getRedis",method = RequestMethod.POST)    @ResponseBody    public ModelMap getRedis() throws Exception {        //存储String//        redisUtil.set("20182019","这是一条测试数据1", RedisConstants.datebase1);//        Long resExpire = redisUtil.expire("20182018", 60, RedisConstants.datebase1);//设置key过期时间//        String res = redisUtil.get("20182019", RedisConstants.datebase1);//        String name = redisUtil.get("name", RedisConstants.datebase0);//        //存储hash-map//        Map
map=new HashMap
();// map.put("a","a1");// map.put("b","a2");// map.put("c","a2");// redisUtil.hmset("dd",map,RedisConstants.datebase1);// List
list111 = (List
) redisUtil.getList("testlist");// System.out.println(list111); //存储list serialize// List
userList=accountService.selsetUserList();// System.out.println(userList);// for(UserVO user:userList){// redisUtil.lpush(RedisConstants.datebase1,"userList",user.getUserid()+"");// redisUtil.hset("user:"+user.getUserid(),"userId",user.getUserid()+"");// redisUtil.hset("user:"+user.getUsername(),"userName",user.getUsername()+"");// redisUtil.hset("user:"+user.getEmail(),"usereEail",user.getEmail()+"");//// } //获取List数据 String userId= redisUtil.hget("userList:"+1,"userId"); String userName= redisUtil.hget("userList:"+1,"userName"); String userEmail= redisUtil.hget("userList:"+1,"userEmail"); System.out.println(userId); System.out.println(userName); System.out.println(userEmail); return null; }}
View Code

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

转载于:https://www.cnblogs.com/ningshare/p/10711436.html

你可能感兴趣的文章
Python/PHP 远程文件/图片 下载
查看>>
【原创】一文彻底搞懂安卓WebView白名单校验
查看>>
写给对前途迷茫的朋友:五句话定会改变你的人生
查看>>
并行程序设计学习心得1——并行计算机存储
查看>>
JAVA入门到精通-第86讲-半双工/全双工
查看>>
bulk
查看>>
js document.activeElement 获得焦点的元素
查看>>
abb画学号
查看>>
C++ 迭代器运算
查看>>
【支持iOS11】UITableView左滑删除自定义 - 实现多选项并使用自定义图片
查看>>
day6-if,while,for的快速掌握
查看>>
JavaWeb学习笔记(十四)--JSP语法
查看>>
【算法笔记】多线程斐波那契数列
查看>>
java8函数式编程实例
查看>>
jqgrid滚动条宽度/列显示不全问题
查看>>
在mac OS10.10下安装 cocoapods遇到的一些问题
查看>>
angularjs表达式中的HTML内容,如何不转义,直接表现为html元素
查看>>
css技巧
查看>>
Tyvj 1728 普通平衡树
查看>>
[Usaco2015 dec]Max Flow
查看>>