package com.sangeng.utils;
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;
import java.util.*;
import java.util.concurrent.TimeUnit;
@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);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Spring Security应用实践,整合redis缓存
共174个文件
xml:110个
class:30个
java:30个
需积分: 11 1 下载量 135 浏览量
2023-01-04
14:55:40
上传
评论
收藏 1.07MB RAR 举报
温馨提示
Spring Security应用实践,整合redis缓存,实现用户利用token进行登录功能。 Spring Security*是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富。 一般来说中大型的项目都是使用SpringSecurity来做安全框架。小项目有Shiro的比较多,因为相比与SpringSecurity,Shiro的上手更加的简单。 一般Web应用的需要进行认证和授权。 认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户 授权:经过认证后判断当前用户是否有权限进行某个操作 而认证和授权也是SpringSecurity作为安全框架的核心功能。 通过快速搭建SpringBoot框架来实现。
资源推荐
资源详情
资源评论
收起资源包目录
Spring Security应用实践,整合redis缓存 (174个子文件)
User.class 9KB
Menu.class 8KB
RedisCache.class 8KB
LoginUser.class 5KB
SecurityConfig.class 5KB
JwtUtil.class 4KB
LoginServiceImpl.class 4KB
UserDetailsServiceImpl.class 4KB
JwtAuthenticationTokenFilter.class 3KB
SecurityConfig.class 3KB
FastJsonRedisSerializer.class 3KB
ResponseResult.class 2KB
MapperTest.class 2KB
RedisConfig.class 2KB
AuthenticationEntryPointImpl.class 2KB
AccessDeniedHandlerImpl.class 2KB
CorsConfig.class 1KB
SGExpressionRoot.class 1KB
LoginController.class 1KB
SGFailureHandler.class 1KB
SGLogoutSuccessHandler.class 1KB
SGSuccessHandler.class 1KB
HelloController.class 1KB
WebUtils.class 1016B
SecurityApplication.class 904B
TokenApplication.class 782B
HelloController.class 604B
MenuMapper.class 424B
UserMapper.class 292B
LoginServcie.class 263B
SanGengTokenDemo.iml 12KB
SanGengSecurityQuickStart.iml 6KB
RedisCache.java 6KB
JwtUtil.java 4KB
SecurityConfig.java 3KB
LoginServiceImpl.java 3KB
JwtAuthenticationTokenFilter.java 2KB
LoginUser.java 2KB
FastJsonRedisSerializer.java 2KB
UserDetailsServiceImpl.java 2KB
User.java 2KB
MapperTest.java 2KB
Menu.java 1KB
SecurityConfig.java 1KB
RedisConfig.java 1KB
ResponseResult.java 1KB
AuthenticationEntryPointImpl.java 1KB
AccessDeniedHandlerImpl.java 1KB
CorsConfig.java 920B
LoginController.java 861B
HelloController.java 802B
SGExpressionRoot.java 780B
WebUtils.java 739B
SGFailureHandler.java 734B
SGSuccessHandler.java 723B
SGLogoutSuccessHandler.java 705B
SecurityApplication.java 470B
TokenApplication.java 407B
HelloController.java 310B
MenuMapper.java 262B
LoginServcie.java 218B
UserMapper.java 182B
workspace.xml 65KB
uiDesigner.xml 9KB
pom.xml 2KB
pom.xml 1KB
compiler.xml 840B
Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_12_3.xml 766B
Maven__org_springframework_boot_spring_boot_starter_data_redis_2_5_0.xml 743B
Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_5_0.xml 743B
Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml 730B
Maven__org_springframework_boot_spring_boot_starter_security_2_5_0.xml 729B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_12_3.xml 725B
Maven__org_springframework_boot_spring_boot_starter_logging_2_5_0.xml 722B
Maven__org_springframework_boot_spring_boot_starter_tomcat_2_5_0.xml 715B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_12_3.xml 711B
Maven__org_springframework_boot_spring_boot_autoconfigure_2_5_0.xml 708B
Maven__org_springframework_security_spring_security_config_5_5_0.xml 703B
Maven__org_springframework_boot_spring_boot_starter_json_2_5_0.xml 701B
Maven__org_springframework_boot_spring_boot_starter_test_2_5_0.xml 701B
Maven__org_springframework_boot_spring_boot_starter_jdbc_2_5_0.xml 701B
MenuMapper.xml 699B
MenuMapper.xml 699B
Maven__org_springframework_boot_spring_boot_starter_web_2_5_0.xml 694B
Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_46.xml 690B
Maven__org_springframework_security_spring_security_core_5_5_0.xml 689B
Maven__org_springframework_security_spring_security_web_5_5_0.xml 682B
Maven__com_fasterxml_jackson_core_jackson_annotations_2_12_3.xml 681B
Maven__org_springframework_data_spring_data_keyvalue_2_5_1.xml 673B
Maven__org_springframework_spring_context_support_5_3_7.xml 667B
Maven__org_springframework_boot_spring_boot_starter_2_5_0.xml 666B
Maven__org_springframework_data_spring_data_commons_2_5_1.xml 666B
Maven__org_junit_platform_junit_platform_commons_1_7_2.xml 663B
Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml 663B
Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml 663B
Maven__com_baomidou_mybatis_plus_boot_starter_3_4_3.xml 660B
Maven__com_fasterxml_jackson_core_jackson_databind_2_12_3.xml 660B
Maven__org_jetbrains_kotlin_kotlin_stdlib_common_1_5_0.xml 657B
Maven__org_junit_platform_junit_platform_engine_1_7_2.xml 656B
Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_46.xml 655B
共 174 条
- 1
- 2
资源评论
大雄是个程序员
- 粉丝: 2832
- 资源: 571
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 原生微信小程序源码 - -仿豆瓣图书
- 原生微信小程序源码 - -滴滴公交-查公交
- 人工智能实验四 感知器算法的设计实现
- java小项目多线程多线程 复制文件 冒泡排序 群聊
- 四数之和(java代码).docx
- 701837906919458TapScanner v3.0.10 (Pro).apk
- 青岛大学人工智能实验二 利用α-β搜索的博弈树算法编写一字棋游戏
- ### 1、项目介绍 本项目Scrapy进行数据爬取,并使用Django框架+PyEcharts实现可视化大屏 效果如下:
- # 微信小程序-健康菜谱 基于微信小程序的一个查找检索菜谱的应用 ### 效果 !动态图(./res/gif/demo
- zabbix-get命令包资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功