开发喵星球

若依分离版去除redis数据库(182)

1 注释redis 配置

位置:ruoyi-admin模块下的application.yml配置文件
注释以下内容:

#  # redis 配置
#  redis:
#    # 地址
#    host: 119.91.202.***
#    # 端口,默认为6379
#    port: 6379
#    # 数据库索引
#    database: 1
#    # 密码
#    password:
#    # 连接超时时间
#    timeout: 3000
#    lettuce:
#      pool:
#        # 连接池中的最小空闲连接
#        min-idle: 0
#        # 连接池中的最大空闲连接
#        max-idle: 8
#        # 连接池的最大数据库连接数
#        max-active: 8
#        # #连接池最大阻塞等待时间(使用负值表示没有限制)
#        max-wait: -1ms

2 注释Redis配置RedisConfig

位置:ruoyi-framework下的RedisConfig.java
注释掉

@Bean
@Configuration
@EnableCaching

这3个注解,不用删除RedisConfig.java,因为后期再次使用redis时,直接放开就OK了。

3 新建MyCache类

位置:ruoyi-common/core/redis/MyCache.java

package com.ruoyi.common.core.redis;

import org.springframework.cache.Cache;
import org.springframework.cache.support.SimpleValueWrapper;
import org.springframework.stereotype.Component;

import java.util.Collection;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentHashMap;

@Component
public class MyCache implements Cache {

    // 使用ConcurrentHashMap作为数据的存储
    private Map<String, Object> storage = new ConcurrentHashMap<>();

    // getName获取cache的名称,存取数据的时候用来区分是针对哪个cache操作
    @Override
    public String getName() {
        return null;
    }

    @Override
    public Object getNativeCache() {
        return null;
    }

    public boolean hasKey(String key){
        return storage.containsKey(key);
    }

    @Override
    public ValueWrapper get(Object key) {
        String k = key.toString();
        Object value = storage.get(k);

        // 注意返回的数据,要和存放时接收到数据保持一致,要将数据反序列化回来。
        return Objects.isNull(value) ? null : new SimpleValueWrapper(value);
    }

    @Override
    public <T> T get(Object key, Class<T> type) {
        return null;
    }

    @Override
    public <T> T get(Object key, Callable<T> valueLoader) {
        return null;
    }

    // put方法,就是执行将数据进行缓存
    @Override
    public void put(Object key, Object value) {
        if (Objects.isNull(value)) {
            return;
        }
        //存值
        storage.put(key.toString(), value);
    }

    // evict方法,是用来清除某个缓存项
    @Override
    public void evict(Object key) {
        storage.remove(key.toString());
    }

    // 删除集合
    public boolean deleteObject(final Collection collection){
        collection.forEach(o -> {
            storage.remove(o.toString());
        } );
        return true;
    }

    // 获取所有的keys
    public Collection<String> keys(final String pattern){
        return storage.keySet();
    }

    @Override
    public void clear() {

    }
}

4 修改RedisCache类

位置: ruoyi-common/core/redis/RedisCache.java

操作:将代码不删除、注释掉,防止后期使用redis。

5 修改DictUtils

位置: ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java

**
 * 获取字典缓存
 * 
 * @param key 参数键
 * @return dictDatas 字典数据列表
 */
public static List<SysDictData> getDictCache(String key)
{
    JSONArray arrayCache = JSONArray.parseArray(JSON.toJSONString(SpringUtils.getBean(RedisCache.class).getCacheObject(getCacheKey(key))));
//        JSONArray arrayCache = SpringUtils.getBean(RedisCache.class).getCacheObject(getCacheKey(key));
    if (StringUtils.isNotNull(arrayCache))
    {
        return arrayCache.toList(SysDictData.class);
    }
    return null;
}

6 注释限流处理相关注解

位置:ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/RateLimiterAspect.java

重启项目就可以了。

   
分类:Java/OOP 作者:无限繁荣, 吴蓉 发表于:2024-04-17 22:19:53 阅读量:199
<<   >>


powered by kaifamiao