Fetch the repository succeeded.
This action will force synchronization from YRain/smart-cache, which will overwrite any changes that you have made since you forked the repository, and can not be recovered!!!
Synchronous operation will process in the background and will refresh the page when finishing processing. Please be patient.
Java distributed second-level cache, which is achieved based on Ehcache2 and Redis, can realize cache monitoring and fetching of multi-computer cluster at all levels besides basic operations.
基于Ehcache2和Redis实现的Java分布式二级缓存.除基本操作以外实现多机集群时各级缓存的监管和抓取.
mvn clean install -Dmaven.test.skip=true
<dependency>
<groupId>com.smart</groupId>
<artifactId>smart-cache</artifactId>
<version>${VERSION}</version>
</dependency>
<!-- Redis -->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxTotal" value="${redis.max.total:1024}"/>
<property name="minIdle" value="${redis.min.idle:256}"/>
<property name="maxIdle" value="${redis.max.idle:256}"/>
<property name="maxWaitMillis" value="${redis.max.wait.millis:3000}"/>
</bean>
<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
<constructor-arg name="poolConfig" ref="jedisPoolConfig" />
<constructor-arg name="host" value="${redis.host}" />
<constructor-arg name="port" value="${redis.port}" />
</bean>
<bean id="jedisTemplate" class="com.smart.jedis.JedisTemplate">
<property name="jedisPool" ref="jedisPool" />
</bean>
<!-- Smart Cache -->
<bean id="cacheTemplate" class="com.smart.cache.CacheTemplate" destroy-method="shutdown">
<property name="jedisTemplate" ref="jedisTemplate" />
</bean>
cacheTemplate.set(name, key, value);// 设置
cacheTemplate.get(name, key);// 获取
cacheTemplate.del(name, key);// 删除
cacheTemplate.rem(name);// 删除name下所有缓存
cacheTemplate.cls();// 清空所有缓存
cacheTemplate.fetch(name, key);// 抓取集群下所有单机一级缓存
cacheTemplate.ttl(name, key, level);// 获取缓存ttl
cacheTemplate.names();// 获取所有缓存name
cacheTemplate.keys(name);// 获取name下所有key
cacheTemplate.size(name);// 获取name下缓存数量
cacheTemplate.values(name);// 获取name下缓存值
见:smart-cache/src/test/java/com/smart/cache/App.java
<cache:annotation-driven cache-manager="cacheManager" proxy-target-class="true"/>
<bean id="cacheManager" class="com.smart.cache.spring.CacheManager">
<property name="cacheTemplate" ref="cacheTemplate" />
</bean>
<dependency>
<groupId>com.smart</groupId>
<artifactId>smart-cache-autoload</artifactId>
<version>${VERSION}</version>
</dependency>
<bean id="cacheTemplateManager" class="com.smart.cache.autoload.CacheManager" destroy-method="destroy">
<constructor-arg ref="autoLoadConfig" />
<constructor-arg ref="cacheSerializer" />
<constructor-arg ref="scriptParser" />
<constructor-arg ref="cacheTemplate" />
</bean>
<servlet>
<servlet-name>SmartCache</servlet-name>
<servlet-class>com.smart.servlet.CacheAdminServlet</servlet-class>
<init-param>
<param-name>username</param-name>
<param-value>admin</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>admin</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>SmartCache</servlet-name>
<url-pattern>/smartcache/*</url-pattern>
</servlet-mapping>
注意: 若修改了序列化方式,务必清空Redis上原缓存数据
<!-- Serializer -->
<bean id="stringSerializer" class="com.smart.serializer.StringSerializer" />
<bean id="fstSerializer" class="com.smart.serializer.FSTSerializer" />
<bean id="fastjsonSerializer" class="com.smart.serializer.FastjsonSerializer" />
<!-- Redis -->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxTotal" value="${redis.max.total:1024}"/>
<property name="minIdle" value="${redis.min.idle:256}"/>
<property name="maxIdle" value="${redis.max.idle:256}"/>
<property name="maxWaitMillis" value="${redis.max.wait.millis:3000}"/>
</bean>
<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
<constructor-arg name="poolConfig" ref="jedisPoolConfig" />
<constructor-arg name="host" value="${redis.host}" />
<constructor-arg name="port" value="${redis.port}" />
</bean>
<bean id="jedisTemplate" class="com.smart.jedis.JedisTemplate">
<property name="jedisPool" ref="jedisPool" />
<property name="keySerializer" ref="stringSerializer" /><!-- key默认使用string序列化 -->
<property name="valSerializer" ref="fstSerializer" /> <!-- val默认使用fst序列化 -->
</bean>
<!-- Smart Cache -->
<bean id="cacheTemplate" class="com.smart.cache.CacheTemplate" destroy-method="shutdown">
<property name="key" value="smart" /><!-- Redis前缀 -->
<property name="spliter" value=":" /><!-- Redis分隔符 -->
<property name="localEnabled" value="true" /><!-- 是否启用本地缓存 -->
<property name="setCmdEnabled" value="false" /><!-- 是否启用set通知 -->
<property name="localStoreLocation" value="/cache/" /><!-- 本地缓存存储磁盘位置 -->
<property name="localMaxBytesLocalHeap" value="128M" /><!-- 本地缓存最大内存大小 -->
<property name="localMaxBytesLocalDisk" value="1024M" /><!-- 本地缓存最大磁盘大小 -->
<property name="localTimeToLiveSeconds" value="600" /><!-- 本地缓存10分钟过期 -->
<property name="localDiskExpiryThreadIntervalSeconds" value="180" /><!-- 本地缓存3分钟清理一次 -->
<property name="fetchTimeoutSeconds" value="3" /><!-- fetch命令最长等待3秒 -->
<property name="jedisTemplate" ref="jedisTemplate" /><!-- jedis操作类 -->
</bean>
见:smart-cache/src/test/java/spring.xml
<bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
<constructor-arg index="0">
<set>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg index="0" value="192.168.1.157" />
<constructor-arg index="1" value="3001" type="int" />
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg index="0" value="192.168.1.157" />
<constructor-arg index="1" value="3002" type="int" />
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg index="0" value="192.168.1.157" />
<constructor-arg index="1" value="3003" type="int" />
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg index="0" value="192.168.1.157" />
<constructor-arg index="1" value="3004" type="int" />
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg index="0" value="192.168.1.157" />
<constructor-arg index="1" value="3005" type="int" />
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg index="0" value="192.168.1.157" />
<constructor-arg index="1" value="3006" type="int" />
</bean>
</set>
</constructor-arg>
<constructor-arg index="1" value="2000" type="int"></constructor-arg>
<constructor-arg index="2" value="100" type="int"></constructor-arg>
<constructor-arg index="3" ref="jedisPoolConfig"></constructor-arg>
</bean>
<bean id="jedisTemplate" class="com.smart.jedis.JedisTemplate">
<property name="jedisCluster" ref="jedisCluster"/>
</bean>
<bean id="jedisPool" class="redis.clients.jedis.JedisPool" destroy-method="destroy">
<constructor-arg index="0" ref="jedisPoolConfig" />
<constructor-arg index="1" value="${redis.host}" />
<constructor-arg index="2" value="${redis.port}" />
<constructor-arg index="3" value="${redis.timeout:3000}" />
<constructor-arg index="4" value="${redis.pass}" />
</bean>
QQ:20365124 email:yrain@live.cn
Sign in for post a comment
Comment ( 0 )