package com.example.j.utils;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.BoundSetOperations;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Component;
/**
* @author bing_ @create 2022/1/4-22:07
*/
@SuppressWarnings(value = {"unchecked", "rawtypes"})
@Component
public class RedisCache {
@Autowired
public RedisTemplate redisTemplate;
/**
* 缓存基本的对象,Integer、String、实体类等
*
* @param key 缓存的键值
* @param value 缓存的值
*/
public <T> void setCacheObject(final String key, final T value) {
redisTemplate.opsForValue().set(key, value);
}
/**
* 缓存基本的对象,Integer、String、实体类等
*
* @param key 缓存的键值
* @param value 缓存的值
* @param timeout 时间
* @param timeUnit 时间颗粒度
*/
public <T> void setCacheObject(final String key, final T value, final Integer timeout,
final TimeUnit timeUnit) {
redisTemplate.opsForValue().set(key, value, timeout, timeUnit);
}
/**
* 设置有效时间
*
* @param key Redis键
* @param timeout 超时时间
* @return true=设置成功;false=设置失败
*/
public boolean expire(final String key, final long timeout) {
return expire(key, timeout, TimeUnit.SECONDS);
}
/**
* 设置有效时间
*
* @param key Redis键
* @param timeout 超时时间
* @param unit 时间单位
* @return true=设置成功;false=设置失败
*/
public boolean expire(final String key, final long timeout, final TimeUnit unit) {
return redisTemplate.expire(key, timeout, unit);
}
/**
* 获得缓存的基本对象。
*
* @param key 缓存键值
* @return 缓存键值对应的数据
*/
public <T> T getCacheObject(final String key) {
ValueOperations<String, T> operation = redisTemplate.opsForValue();
return operation.get(key);
}
/**
* 删除单个对象
*
* @param key
*/
public boolean deleteObject(final String key) {
return redisTemplate.delete(key);
}
/**
* 删除集合对象
*
* @param collection 多个对象
* @return
*/
public long deleteObject(final Collection collection) {
return redisTemplate.delete(collection);
}
/**
* 缓存List数据
*
* @param key 缓存的键值
* @param dataList 待缓存的List数据
* @return 缓存的对象
*/
public <T> long setCacheList(final String key, final List<T> dataList) {
Long count = redisTemplate.opsForList().rightPushAll(key, dataList);
return count == null ? 0 : count;
}
/**
* 获得缓存的list对象
*
* @param key 缓存的键值
* @return 缓存键值对应的数据
*/
public <T> List<T> getCacheList(final String key) {
return redisTemplate.opsForList().range(key, 0, -1);
}
/**
* 缓存Set
*
* @param key 缓存键值
* @param dataSet 缓存的数据
* @return 缓存数据的对象
*/
public <T> BoundSetOperations<String, T> setCacheSet(final String key, final Set<T> dataSet) {
BoundSetOperations<String, T> setOperation = redisTemplate.boundSetOps(key);
Iterator<T> it = dataSet.iterator();
while (it.hasNext()) {
setOperation.add(it.next());
}
return setOperation;
}
/**
* 获得缓存的set
*
* @param key
* @return
*/
public <T> Set<T> getCacheSet(final String key) {
return redisTemplate.opsForSet().members(key);
}
/**
* 缓存Map
*
* @param key
* @param dataMap
*/
public <T> void setCacheMap(final String key, final Map<String, T> dataMap) {
if (dataMap != null) {
redisTemplate.opsForHash().putAll(key, dataMap);
}
}
/**
* 获得缓存的Map
*
* @param key
* @return
*/
public <T> Map<String, T> getCacheMap(final String key) {
return redisTemplate.opsForHash().entries(key);
}
/**
* 往Hash中存入数据
*
* @param key Redis键
* @param hKey Hash键
* @param value 值
*/
public <T> void setCacheMapValue(final String key, final String hKey, final T value) {
redisTemplate.opsForHash().put(key, hKey, value);
}
/**
* 获取Hash中的数据
*
* @param key Redis键
* @param hKey Hash键
* @return Hash中的对象
*/
public <T> T getCacheMapValue(final String key, final String hKey) {
HashOperations<String, String, T> opsForHash = redisTemplate.opsForHash();
return opsForHash.get(key, hKey);
}
/**
* 删除Hash中的数据
*
* @param key
* @param hkey
*/
public void delCacheMapValue(final String key, final String hkey) {
HashOperations hashOperations = redisTemplate.opsForHash();
hashOperations.delete(key, hkey);
}
/**
* 获取多个Hash中的数据
*
* @param key Redis键
* @param hKeys Hash键集合
* @return Hash对象集合
*/
public <T> List<T> getMultiCacheMapValue(final String key, final Collection<Object> hKeys) {
return redisTemplate.opsForHash().multiGet(key, hKeys);
}
/**
* 获得缓存的基本对象列表
*
* @param pattern 字符串前缀
* @return 对象列表
*/
public Collection<String> keys(final String pattern) {
return redisTemplate.keys(pattern);
}
}
Java自用工具资源压缩包
需积分: 0 125 浏览量
更新于2022-09-16
收藏 15KB RAR 举报
在给定的信息中,虽然标题和描述中没有提供具体的IT知识点,但标签为"java",我们可以推测这个压缩包可能包含与Java编程语言相关的学习资料或项目文件。由于没有具体的文件内容,我将根据Java这一主题,提供一个全面且丰富的Java编程知识概述。
Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年发布。它的设计目标是“简单、通用、面向对象、健壮、安全、高性能、可移植、多线程和动态”。Java程序可以在任何支持Java运行环境(JRE)的平台上运行,这得益于其“写一次,到处运行”的特性。
1. **Java基础知识**:
- 类和对象:Java基于面向对象编程,一切皆为对象。类是对象的模板,对象是类的实例。
- 变量和数据类型:Java有基本数据类型(如int、char、float等)和引用数据类型(如类、接口、数组)。
- 控制结构:包括条件语句(if-else)、循环(for、while、do-while)和分支结构(switch)。
- 异常处理:通过try-catch-finally块来捕获和处理运行时错误。
2. **Java语法**:
- 包(Package):组织类和接口,提供命名空间和访问控制。
- 导入(Import):引入其他包中的类和接口。
- 主类(Main Method):程序的入口点,定义为`public static void main(String[] args)`。
3. **类和对象的生命周期**:
- 构造器:初始化对象时调用,用于设置初始状态。
- 方法:实现对象的功能。
- 析构方法:在对象被垃圾回收前调用,用于资源清理。
4. **继承和多态**:
- 继承:子类继承父类的属性和方法,实现代码重用。
- 多态:一个接口可以有多种实现方式,允许不同类型的对象对同一消息作出响应。
5. **接口(Interface)**:
- Java中接口是完全抽象的,只能包含方法声明,不能有实现。
- 接口用于实现多重继承和定义行为规范。
6. **集合框架**:
- List(如ArrayList、LinkedList)、Set(如HashSet、TreeSet)和Map(如HashMap、TreeMap)接口及其实现类,用于存储和操作对象。
7. **异常处理**:
- 异常是程序运行时的错误,Java提供了异常类层次结构来处理它们。
- 捕获和抛出异常,以及自定义异常类。
8. **输入/输出(I/O)系统**:
- 流的概念,如字节流、字符流、对象流。
- 文件操作,包括读取、写入、复制等。
- 网络通信,如套接字编程。
9. **多线程**:
- Thread类和Runnable接口,创建和管理线程。
- 线程同步和互斥,如synchronized关键字、wait()、notify()和notifyAll()。
10. **反射(Reflection)**:
- 在运行时获取类的信息,创建和调用对象的方法。
- 动态代理,实现运行时接口的动态实现。
11. **Java虚拟机(JVM)**:
- JVM是Java程序的运行环境,负责解释执行字节码。
- 垃圾回收机制,自动管理内存。
- 类加载机制,实现类的动态加载。
12. **Java标准库**:
- 包含大量预定义的类和接口,如IO流、网络编程、日期时间处理等。
13. **Java应用领域**:
- Web开发(如Spring Boot、Struts、JSF框架)。
- Android应用开发。
- 企业级应用(EJB、JMS、JPA等)。
- 数据库连接(JDBC)。
- 大数据处理(Hadoop、Spark等)。
以上是对Java编程语言的基本介绍,涵盖了许多关键概念和特性。实际学习和使用Java时,还需要深入理解并实践这些知识,结合具体项目需求进行应用。

干涸的雾
- 粉丝: 5
最新资源
- 基于多模态毫米波雷达的疲劳驾驶检测系统.zip
- 基于毫米波OFDM信号的4D ISAC成像仿真,采用Matlab编写的MUSIC算法.zip
- 基于深度学习的毫米波系统信道估计和混合预编码.zip
- 基于空间重叠指数的毫米波多用户MIMO系统联合波束选择”.zip
- 基于深度学习解码的毫米波信道估计源编码.zip
- 基于随机空间采样的混合波束成形毫米波系统的宽带MIMO信道估计.zip
- 宽带毫米波 MIMO 系统中的传感辅助信道估计.zip
- 随机阻塞下毫米波通信的多波束功率分配”.zip
- 通过矩阵补全对毫米波系统进行大规模MIMO信道估计.zip
- 移动阻断器对毫米波蜂窝系统的影响.zip
- 【数据结构与算法】霍夫曼树原理与Python代码实战:数据压缩与通信编码中的高效应用
- 【html手游源码】变态方块小游戏.zip
- 【html手游源码】BrowserQuest源代码.zip
- 【html手游源码】冰桶大战.zip
- 【html手游源码】步步惊心小游戏源码.zip
- 【html手游源码】捕鱼游戏源码.zip