首页 > 数据库 >RedisCache redis工具类

RedisCache redis工具类

时间:2024-09-02 19:15:12浏览次数:4  
标签:缓存 return redis param RedisCache key 工具 public redisTemplate

public class RedisCache {

    @Autowired
    public RedisTemplate redisTemplate;

    /**
     * 缓存的基本对象。Integer String 实体类
     *
     * @param key  缓存的键值
     * @param value 缓存的值
     * @param <T>
     * @return    缓存的对象
     */
    public <T> ValueOperations<String, T> setCacheObject(String key, T value){
        ValueOperations<String, T> operations = redisTemplate.opsForValue();
        operations.set(key, value);
        return operations;
    }

    /**
     *
     * @param key  缓存的键值
     * @param value  缓存的值
     * @param timeout  时间
     * @param timeUnit  时间颗粒度
     * @param <T>
     * @return   缓存的对象
     */
    public <T> ValueOperations<String, T> setCacheObject(String key, T value, Integer timeout, TimeUnit timeUnit){
        ValueOperations<String, T> operations = redisTemplate.opsForValue();
        operations.set(key, value, timeout, timeUnit);
        return operations;
    }

    /**
     * 获得缓存的基本对象
     *
     * @param key   缓存键值
     * @param <T>
     * @return   缓存键值对应的数据
     */
    public <T> T getCacheObject(String key){
        ValueOperations<String, T> operations = redisTemplate.opsForValue();
        return operations.get(key);
    }

    /**
     * 删除单个对象
     *
     * @param key
     */
    public void deleteObject(String  key){
        redisTemplate.delete(key);
    }


    /**
     * 删除集合对象
     *
     * @param collection
     */
    public void deleteObject(Collection collection){
        redisTemplate.delete(collection);
    }


    /**
     * 缓存list数据
     *
     * @param key    缓存的键值
     * @param dataList    带缓存的list数据
     * @param <T>
     * @return    缓存的对象
     */
    public <T> ListOperations<String, T> setCacheList(String key, List<T> dataList){
        ListOperations<String, T> listOperations = redisTemplate.opsForList();
        if (dataList != null) {
            int size = dataList.size();
            for (int i = 0; i < size; i++) {
                listOperations.leftPush(key, dataList.get(i));
            }
        }
        return listOperations;
    }


    /**
     *  获得缓存的list对象
     *
     * @param key  缓存的键值
     * @param <T>
     * @return   缓存键值对应的集合数据
     */
    public  <T> List<T> getCacheList(String key){
        List<T> list = new ArrayList<>();
        ListOperations<String, T> listOperations = redisTemplate.opsForList();
        Long size = listOperations.size(key);

        for (int i = 0; i < size; i++) {
            list.add(listOperations.index(key, i));
        }
        return list;
    }

    /**
     * 缓存Set
     *
     * @param key 缓存键值
     * @param dataSet 缓存的数据
     * @return 缓存数据的对象
     */
    public <T> BoundSetOperations<String, T> setCacheSet(String key, 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(String key) {
        Set<T> dataSet = new HashSet<T>();
        BoundSetOperations<String, T> operation = redisTemplate.boundSetOps(key);
        dataSet = operation.members();
        return dataSet;
    }

    /**
     * 缓存Map
     *
     * @param key
     * @param dataMap
     * @return
     */
    public <T> HashOperations<String, String, T> setCacheMap(String key, Map<String, T> dataMap) {
        HashOperations hashOperations = redisTemplate.opsForHash();
        if (null != dataMap)
        {
            for (Map.Entry<String, T> entry : dataMap.entrySet())
            {
                hashOperations.put(key, entry.getKey(), entry.getValue());
            }
        }
        return hashOperations;
    }

    /**
     * 获得缓存的Map
     *
     * @param key
     * @return
     */
    public <T> Map<String, T> getCacheMap(String key) {
        Map<String, T> map = redisTemplate.opsForHash().entries(key);
        return map;
    }

    /**
     *获得缓存的基本对象列表
     * @param pattern  字符串前缀
     * @return
     */
    public Collection<String> keys(String pattern){
        return redisTemplate.keys(pattern);
    }
}

标签:缓存,return,redis,param,RedisCache,key,工具,public,redisTemplate
From: https://www.cnblogs.com/luo9tian/p/18393326

相关文章

  • Redis组件介绍(五)
    写在前面今天继续学习redis后面的知识。Redis哨兵机制哨兵Sentinel机制Sentinel(哨兵)是Redis的高可用性解决方案。由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器。当被监视的主服务器进入下线状态时,Sentine......
  • 开源优雅的API交互工具 HTTPie CLI
    #HTTPie CLI:现代、用户友好的命令行HTTP客户端 - 精选真开源,释放新价值。概览HTTPie CLI 是一款专为API时代设计的命令行HTTP客户端,以其简洁明了的语法和丰富的功能集,为开发者和系统管理员提供了一种高效与HTTP服务交互的方式。它支持JSON格式的自动解析和生成,使得与RESTfu......
  • Win11 / Win10 系统极化工具,降低游戏延迟效果明显
    Win11/Win10系统优化工具,降低游戏延迟效果明显Windows系统优化就是精简系统一些功能组件、对一些系统功能进行设置等,这样可以减少不必要的硬件资源占用。全面的系统优化功能外,据不少网友表示通过优化后CSGO游戏降低输入延迟效果明显。免费下载地址:https://yun......
  • 使用 `wget` 和 `curl` 命令行工具的全面指南
    个人名片......
  • 全网最全的日期格式化工具类
    全网最全的日期格式化工具类日期工具类importlombok.extern.slf4j.Slf4j;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.time.LocalDate;importjava.time.LocalDateTime;importjava.time.LocalTime;importjava.time.ZoneId;importja......
  • 【系统服务工具箱】17项系统常用服务快捷启动,适合小白,仅700KB不到
    为了方便用户调用这些系统命令,写个集成的小软件。简单方便。cmd管理员控制面板注册表计算机管理设备管理任务管理环境变量磁盘管理磁盘清理服务组策略网络连接区域语言选项Internet属性设备和打印机电源选项卸载程序  https://wwnb.lanzoul.com/b02sezb......
  • 窗口录屏工具
    窗口录制工具的使用说明与详细介绍概述此脚本是一个基于Tkinter和OpenCV的简单窗口录制工具,允许用户录制当前屏幕的活动内容并保存为视频文件。用户可以通过图形界面(GUI)进行录制控制,并选择所需的帧率。个人博客个人博客直达地址网站不断完善中里面拥有大量的脚本,......
  • Gen AI:重塑未来的创造力工具箱
    目录页一、GenAI工具箱助力大学生涯1.通用GenAI工具2.GenAI科研辅助1.文献阅读与论文写作2.数据分析与可视化3.AI翻译工具二、GenAI办公、学习助手1.PPT制作2.表格制作3.AI思维导图4.AI办公5.AI图像处理6.AI视频处理7.AI音频处理8.AI......
  • 推荐一款快速去除短视频水印的工具
    在如今这个信息爆炸的时代,我们经常需要从网络上下载视频,但视频中的水印有时会显得非常碍眼。本文将为您推荐一款高效且免费的去水印工具,帮助您轻松去除抖音等短视频中的水印,让您的视频更加美观。软件名称:DP去水印助手(小程序搜索)DP去水印助手是一款简单易用的去水印小程序,......
  • 安装包丨WebGIS开发环境搭建及所需工具
    以下工具为GIS开发中所涉及到的工具,当然如果您已经非常精通web前端领域,并有其他习惯的工具也可以忽略~1.开发工具:Node安装Node.js是一个基于ChromeV8引擎的JavaScript运行环境Node.js使用了一个事件驱动、非阻塞式I/0的模型,使其轻量又高效Node.js的包管理器n......