热门标签 | 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

 



推荐阅读
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • 图数据库中的知识表示与推理机制
    本文探讨了图数据库及其技术生态系统在知识表示和推理问题上的应用。通过理解图数据结构,尤其是属性图的特性,可以为复杂的数据关系提供高效且优雅的解决方案。我们将详细介绍属性图的基本概念、对象建模、概念建模以及自动推理的过程,并结合实际代码示例进行说明。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 本文探讨了如何在 PHP 的 Eloquent ORM 中实现数据表之间的关联查询,并通过具体示例详细解释了如何将关联数据嵌入到查询结果中。这不仅提高了数据查询的效率,还简化了代码逻辑。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • PostgreSQL 10 离线安装指南
    本文详细介绍了如何在无法联网的服务器上进行 PostgreSQL 10 的离线安装,并涵盖了从下载安装包到配置远程访问的完整步骤。 ... [详细]
  • 本文介绍了如何在 DB2 环境中创建和删除数据库编目。创建编目是连接新数据库的必要步骤,涉及获取数据库连接信息、使用命令行工具进行配置,并验证连接的有效性。删除编目则用于移除不再需要的数据库连接。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • PyCharm中配置Pylint静态代码分析工具
    本文详细介绍如何在PyCharm中配置和使用Pylint,帮助开发者进行静态代码检查,确保代码符合PEP8规范,提高代码质量。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文详细介绍了如何使用Spring Boot进行高效开发,涵盖了配置、实例化容器以及核心注解的使用方法。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 本文详细介绍了 MySQL 中 LAST_INSERT_ID() 函数的使用方法及其工作原理,包括如何获取最后一个插入记录的自增 ID、多行插入时的行为以及在不同客户端环境下的表现。 ... [详细]
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社区 版权所有