ruoyi-vue版本(五)ruoyi项目和redis缓存相关的文件与逻辑

本文详细介绍了ruoyi项目中如何集成并使用Redis作为缓存,包括配置类的编写、自定义redisTemplate以及Redis工具类的创建。此外,还探讨了页面上对Redis的操作,如缓存监控、缓存列表的接口实现,以及清除全部缓存的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 需求

很多的项目都使用了redis缓存,若依是咋使用这个redis的?若依项目哪几个文件涉及到了redis缓存?

2 项目集成redis

我们首先看页面,页面上面是有一个模块直接操作redis

在这里插入图片描述
从页面上面就可以看到,关于缓存的部分,现在我们先不看页面对缓存做了什么操作,我们先看后端是咋集成这个redis的;

2.1 项目咋集成redis

若依项目是在集成redis的?

首先就是一个项目,加入redis的依赖

在这里插入图片描述
这个依赖是在公共模块里面引入的,第一步在项目里面引入了redis的依赖,第二步就是写配置类了

在这里插入图片描述
这个配置类是写在了framework模块里面,因为这个模块在pom文件里面将common模块引入了,所以可以使用redis依赖

我们看下这个配置类咋写

2.2 redis的配置类

@Configuration
@EnableCaching
自己随便写一个类,上面加上这两个注解,那么就变成了redis的配置类了
@EnableCaching 的作用是开启注解缓存,就是使用注解的形式进行缓存;


/**
 * redis配置
 * RedisTemplate 的重写
 * @author jing
 *
 * CachingConfigurerSupport  这个也可以不继承,因为当前项目没有使用到
 */
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport
{
   

    @Bean
    @SuppressWarnings(value = {
    "unchecked", "rawtypes" })
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory)
    {
   
//       创建 RedisTemplate 对象,对这个对象进行里面内容的修改,然后改成自己的,之后缓存使用自己
//        的RedisTemplate 对象
        RedisTemplate<Object, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(connectionFactory);

//        创建序列化对象
        FastJson2JsonRedisSerializer serializer = new FastJson2JsonRedisSerializer(Object.class);

        // 使用StringRedisSerializer来序列化和反序列化redis的key值
        template.setKeySerializer(new StringRedisSerializer());
        template.setValueSerializer(serializer);

        // Hash的key也采用StringRedisSerializer的序列化方式
        template.setHashKeySerializer(new StringRedisSerializer());
        template.setHashValueSerializer(serializer);

//        重置配置信息
        template.afterPropertiesSet();
        return template;
    }



    @Bean
    public DefaultRedisScript<Long> limitScript()
    {
   

// 使用redis执行lua执行
        DefaultRedisScript<Long> redisScript = new DefaultRedisScript<>();

        redisScript.setScriptText(limitScriptText());
        // 设置一下返回值类型 为Long
// 因为删除判断的时候,返回的0,给其封装为数据类型。如果不封装那么默认返回String 类型,
// 那么返回字符串与0 会有发生错误。
        redisScript.setResultType(Long.class);

        // 第一个要是script 脚本 ,第二个需要判断的key,第三个就是key所对应的值。
//        redisTemplate.execute(redisScript, Arrays.asList(locKey), uuid);

        return redisScript;
    }

    /**
     * 限流脚本
     // 定义lua 脚本
     */
    private String limitScriptText()
    {
   
        return "local key = KEYS[1]\n" +
                "local count = tonumber(ARGV[1])\n" +
                "local time = tonumber(ARGV[2])\n" +
                "local current = redis.call('get', key);\n" +
                "if current and tonumber(current) > count then\n" +
                "    return tonumber(current);\n" +
                "end\n" +
                "current = redis.call('incr', key)\n" +
                "if tonumber(current) == 1 then\n" +
                "    redis.call('expire', key, time)\n" 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一写代码就开心

你的打赏将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值