• springboot 集成J2Cache


    J2Cache 是 OSChina 目前正在使用的两级缓存框架。第一级缓存使用 Ehcache,第二级缓存使用 Redis 。由于大量的缓存读取会导致 L2 的网络成为整个系统的瓶颈,因此 L1 的目标是降低对 L2 的读取次数。该缓存框架主要用于集群环境中。单机也可使用,用于避免应用重启导致的 Ehcache 缓存数据丢失。

    j2Cache提供了springboot 的集成。

    集成方法如下:

    1.引入pom.xml

     <dependency>
                <groupId>net.oschina.j2cache</groupId>
                <artifactId>j2cache-spring-boot2-starter</artifactId>
                <version>2.7.6-release</version>
            </dependency>
    
            <dependency>
                <groupId>net.oschina.j2cache</groupId>
                <artifactId>j2cache-core</artifactId>
                <version>2.7.7-release</version>
            </dependency>

    2.增加配置文件

    ehcache3.xml

    <!-- for ehcache 3.x -->
    <config
            xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
            xmlns='http://www.ehcache.org/v3'
            xsi:schemaLocation="http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core.xsd">
    
        <!-- Don't remote default cache configuration -->
        <cache-template name="default">
            <key-type>java.lang.String</key-type>
            <value-type>java.io.Serializable</value-type>
            <expiry>
                <ttl unit="seconds">1800</ttl>
            </expiry>
            <resources>
                <heap>1000</heap>
                <offheap unit="MB">100</offheap>
            </resources>
    
        </cache-template>
        <!--
        <persistence directory="${ecache.path}"/>
        -->
        <cache alias="default" uses-template="default"/>
    
    </config>

    j2cache.properties

    #J2Cache configuration
    
    
    #########################################
    # Cache Broadcast Method
    # values:
    # jgroups -> use jgroups's multicast
    # redis -> use redis publish/subscribe mechanism
    #########################################
    
    j2cache.broadcast = net.oschina.j2cache.cache.support.redis.SpringRedisPubSubPolicy
    
    # 是否开启二级缓存
    j2cache.l2-cache-open=true
    j2cache.open-spring-cache= true
    j2cache.allow-null-values= true
    j2cache.cache-clean-mode= active
    j2cache.redis-client=jedis
    
    #组播的通道名称
    jgroups.channel.name = j2cache
    
    #########################################
    # Level 1&2 provider
    # values:
    # none -> disable this level cache
    # ehcache -> use ehcache2 as level 1 cache
    # ehcache3 -> use ehcache3 as level 1 cache
    # caffeine -> use caffeine as level 1 cache(only in memory)
    # redis -> use redis(hashs) as level 2 cache
    # [classname] -> use custom provider
    #########################################
    
    j2cache.L1.provider_class = ehcache3
    j2cache.L2.provider_class = net.oschina.j2cache.cache.support.redis.SpringRedisProvider
    #j2cache.L2.provider_class = redis
    j2cache.L2.config_section = redis
    #j2cache.L2.provider_class = redis
    
    #########################################
    # Cache Serialization Provider
    # values:
    # fst -> fast-serialization
    # kyro -> kyro
    # java -> java standard
    # [classname implements Serializer]
    #########################################
    
    j2cache.serialization = fst
    
    #########################################
    # Ehcache configuration
    #########################################
    
    #ehcache.name=
    #ehcache.configXml=/ehcache.xml
    ehcache3.configXml = /config/ehcache3.xml
    
    #########################################
    # Caffeine configuration
    # caffeine.region.[name] = size, xxxx[s|m|h|d]
    #
    #########################################
    
    caffeine.region.default = 1000, 1h 
    
    #########################################
    # Redis connection configuration
    #########################################
    
    #########################################
    # Redis Cluster Mode
    #
    # single -> single redis server
    # sentinel -> master-slaves servers
    # cluster -> cluster servers (数据库配置无效,使用 database = 0)
    # sharded -> sharded servers  (密码、数据库必须在 hosts 中指定,且连接池配置无效 ; redis://user:password@127.0.0.1:6379/0)
    #
    #########################################
    
    #redis.mode = sentinel
    redis.mode = single
    #cluster name just for sharded
    redis.cluster_name = mymaster
    
    ## redis cache namespace optional, default[j2cache]
    redis.namespace = j2cache
    
    ## connection
    #redis.hosts = 127.0.0.1:26378,127.0.0.1:26379,127.0.0.1:26380
    redis.hosts = 192.168.1.100:6379
    redis.timeout = 2000
    redis.password =
    #redis.database = 0
    
    ## redis pub/sub channel name
    redis.channel = j2cache
    
    ## redis pool properties
    redis.maxTotal = -1
    redis.maxIdle = 2000
    redis.maxWaitMillis = 100
    redis.minEvictableIdleTimeMillis = 864000000
    redis.minIdle = 1000
    redis.numTestsPerEvictionRun = 10
    redis.lifo = false
    redis.softMinEvictableIdleTimeMillis = 10
    redis.testOnBorrow = true
    redis.testOnReturn = false
    redis.testWhileIdle = false
    redis.timeBetweenEvictionRunsMillis = 300000
    redis.blockWhenExhausted = true

    redis.mode = single 模式支持 single,sentinel,cluster

    redis.hosts:需要配置为redis的主机

    j2cache.l2-cache-open:是否开启二级缓存

    3.注入CacheChannel 

    @Component(value = "iCache")
    public class J2cacheImpl implements ICache {
    
        private String region="rx";
    
        @Autowired
        private CacheChannel cacheChannel;
    
    

    4.修改配置文件

    application.properties

    j2cache:
      config-location: classpath:/config/j2cache.properties
      

    配置j2cache.properties 文件路径

  • 相关阅读:
    ionic新手教程第三课-在项目中使用requirejs分离controller文件和server文件
    高并发測试工具webbench
    内存管理详解
    linux command ---1
    运维方面的软件(系统)
    配置 php-fpm 监听的socket
    FastCgi与PHP-fpm之间是个什么样的关系
    分表处理设计思想和实现
    PHP 命名空间以及自动加载(自动调用的函数,来include文件)
    javascript closure
  • 原文地址:https://www.cnblogs.com/yg_zhang/p/10937977.html
Copyright © 2020-2023  润新知