首页 > 数据库 >redis工具类

redis工具类

时间:2023-07-12 15:00:15浏览次数:29  
标签:String object redis private expire key 工具 public

@Component
public class RedisUtils {
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
    @Autowired
    private ValueOperations<String, String> valueOperations;
    @Autowired
    private HashOperations<String, String, Object> hashOperations;
    @Autowired
    private ListOperations<String, Object> listOperations;
    @Autowired
    private SetOperations<String, Object> setOperations;
    @Autowired
    private ZSetOperations<String, Object> zSetOperations;
    /**  默认过期时长,单位:秒 */
    public final static long DEFAULT_EXPIRE = 60 * 60 * 24;
    /**  不设置过期时长 */
    public final static long NOT_EXPIRE = -1;
    private final static Gson gson = new Gson();

    public void set(String key, Object value, long expire){
        valueOperations.set(key, toJson(value));
        if(expire != NOT_EXPIRE){
            redisTemplate.expire(key, expire, TimeUnit.SECONDS);
        }
    }

    public void set(String key, Object value){
        set(key, value, DEFAULT_EXPIRE);
    }

    public <T> T get(String key, Class<T> clazz, long expire) {
        String value = valueOperations.get(key);
        if(expire != NOT_EXPIRE){
            redisTemplate.expire(key, expire, TimeUnit.SECONDS);
        }
        return value == null ? null : fromJson(value, clazz);
    }

    public <T> T get(String key, Class<T> clazz) {
        return get(key, clazz, NOT_EXPIRE);
    }

    public String get(String key, long expire) {
        String value = valueOperations.get(key);
        if(expire != NOT_EXPIRE){
            redisTemplate.expire(key, expire, TimeUnit.SECONDS);
        }
        return value;
    }

    public String get(String key) {
        return get(key, NOT_EXPIRE);
    }

    public void delete(String key) {
        redisTemplate.delete(key);
    }

    /**
     * Object转成JSON数据
     */
    private String toJson(Object object){
        if(object instanceof Integer || object instanceof Long || object instanceof Float ||
                object instanceof Double || object instanceof Boolean || object instanceof String){
            return String.valueOf(object);
        }
        return gson.toJson(object);
    }

    /**
     * JSON数据,转成Object
     */
    private <T> T fromJson(String json, Class<T> clazz){
        return gson.fromJson(json, clazz);
    }
}

 

标签:String,object,redis,private,expire,key,工具,public
From: https://www.cnblogs.com/stromgao/p/17547506.html

相关文章

  • 用Python编写网页自动答题工具,满分轻松到手,你就是全班最靓的仔!
    最近自动答题的外包很多,来给大家分享一下如何用Python来实现自动答题。好了话不多说,我们开始操作。首先你需要准备这些环境使用Python3.8解释器Pycharm编辑器 模块使用importrequests--->数据请求模块pipinstallrequestsimportrefromsele......
  • 解决redis可视化的具体操作步骤
    实现Redis可视化概述在介绍实现Redis可视化的步骤之前,我们先来了解一下Redis和可视化的概念。Redis是一个开源的内存数据结构存储系统,可以用作数据库、缓存、消息中间件等。它支持多种数据结构,如字符串、哈希表、列表、集合等,并提供了丰富的命令和功能,使得开发者可以方便地操作......
  • Redis 数据结构 - 链表
    链表-List的底层实现链表提供了高效的节点重排能力,可以通过顺序访问的方式访问节点,并且支持增加删除节点调整长度。由于C语言原生并不支持链表,redis的链表是自己实现的。List的底层实现就是一个双向链表,支持从链表的两端进行push和pop操作,时间复杂度是O(1)。同时支持在......
  • Json与Java对象互转工具类
    常用的JSON处理库:Jackson:这是最常用的库,它提供了各种特性,如生成/解析JSON的速度快,内存占用小,可扩展性强等。Jackson支持类型安全,还具有复杂数据绑定的能力。Gson:由Google开发,也是一个相当流行的库,使用起来非常简单。Gson可以工作在任何JDK版本上,没有任何额外的依赖项......
  • 金蝶云苍穹技术开放日第七期:开发者工具赋能,打造开发新模式
    金蝶云·苍穹技术开放日」系列活动由金蝶云苍穹平台生态部主办,迄今已成功举办六期,旨在为开发者提供技术分享和行业交流的平台。每一期我们都会聚焦一个技术主题,邀请本领域权威技术专家和外部嘉宾分享技术研究和Madewithkingdee实践案例。金蝶云·苍穹技术开放日第七期以“开发......
  • 如何实现redis面试的具体操作步骤
    实现Redis面试指南简介在面试过程中,Redis是一个常见的面试题目,因此了解如何实现“Redis面试”是非常重要的。本文将指导你完成这个任务。流程概述下面是实现“Redis面试”任务的流程概述:步骤描述步骤1配置Redis环境并安装Redis依赖步骤2创建一个Redis......
  • 如何实现安装redis的具体操作步骤
    如何安装Redis简介Redis是一个开源的高性能键值数据库,广泛用于缓存、消息队列、排行榜等场景。本文将介绍如何在Linux环境下安装Redis,并提供相应的代码示例。安装步骤步骤描述1.安装依赖安装Redis所需的依赖库2.下载Redis从Redis官网下载最新版本的Redis源代码......
  • 封装图片处理工具类,实现图片的裁剪、压缩、图片水印、文字水印、多行文字水印等功能
    目录一、前言二、工具类的依赖和简单介绍1、添加依赖2、简单的使用3、加载需要处理的图片4、添加图片处理规则4.1Builder的方式4.2使用规则工厂的方式5、输出处理后的图片三、使用方式1、图片裁剪图片裁剪规则实体类1.1按长宽裁剪1.1.1示例代码1.1.2实现效果1.2按比例裁剪1......
  • 8款优秀的HTML5开发工具
    HTML5发展越来越受到重视,随着各大浏览器对HTML5技术支持的不断完善以及HTML5技术的不断成熟,未来HTML5必将改变我们创建Web应用程序的方式。今天这篇文章向大家推荐8款优秀的HTML5开发工具,帮助你更高效的编写HTML5应用。InitializrInitializr是制作HTML5网......
  • Topaz DeNoise AI mac版(AI智能图像降噪工具)
    TopazDeNoiseAI是一款基于人工智能技术的图像降噪工具,能够帮助用户快速高效地去除图像中的噪点和杂色,提升图像的清晰度和细节。该软件采用了最新的深度学习算法,能够自动识别并去除各种类型的噪点,包括色斑、颗粒、条纹等,同时还能够保持图像的细节和色彩饱和度,避免出现过度平滑的......