• 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 文件路径

    转载: https://www.cnblogs.com/yg_zhang/p/10937977.html

  • 相关阅读:
    工业相机基础知识
    软件测试最常用的 SQL 命令 | 掌握基本查询、条件查询、聚合查询
    一文掌握软件测试常用SQL命令
    PageObject设计模式在 UI 自动化中的实践(QQ 邮箱登陆为例)
    测试开发必备--搞定PO设计模式
    Junit5 + YAML 参数化和数据驱动,让 App 自动化测试更高效(一)
    快速搞定APP移动端自动化测试
    接口自动化测试的 “能” 与 “不能”
    如何精通接口测试?
    测试开发必备:Dubbo-admin+Zookeeper 的环境搭建实操
  • 原文地址:https://www.cnblogs.com/brithToSpring/p/15070417.html
Copyright © 2020-2023  润新知