Redis作为hibernate的二级缓存的demo

1.使用背景

    因客户需求,需要将现在的项目缓存架构换掉,现在使用的memcached缓存服务器。由于memcached出现了一些bug,客户要求换成Redis缓存服务器。所用的项目是spring+springmvc+hibernate4.18架构。

2.引入jar包

    所需的jar:


    或者使用maven下载依赖

<dependency>  
    <groupId>com.github.debop</groupId>  
    <artifactId>hibernate-redis</artifactId> 
    <version>2.3.2</version>  
</dependency>  
<dependency>  
    <groupId>org.redisson</groupId>  
    <artifactId>redisson</artifactId>  
    <version>2.5.1</version>  
</dependency>  
<dependency>  
    <groupId>de.ruedigermoeller</groupId>  
    <artifactId>fst</artifactId>  
    <version>2.48</version>  
</dependency>  

3.配置文件

    applicationContext.xml

<!-- redis二级缓存 -->
	<prop key="hibernate.cache.use_query_cache">true</prop><!-- 开启缓存 -->
	<prop key="hibernate.cache.use_second_level_cache">true</prop><!-- 开启二级缓存 -->
	<prop key="hibernate.cache.use_structured_entries">true</prop><!-- 结构化存储 -->
	<prop key="hibernate.cache.region_prefix">hibernate</prop><!-- 二级缓存前缀名称-->
	<prop key="hibernate.cache.region.factory_class">org.hibernate.cache.redis.hibernate4.SingletonRedisRegionFactory</prop>
	<prop key="hibernate.cache.provider_configuration_file_resource_path">hibernate-redis.properties</prop>

    hibernate-redis.properties

 # Redisson configuration file
 redisson-config=classpath:redisson.yaml

 redis.expiryInSeconds.default=120
 redis.expiryInSeconds.hibernate.common=0
 redis.expiryInSeconds.hibernate.account=1200
    redisson.yaml:这是单点的配置,若要配置分布式缓存,需修改,可参考其他资料
# redisson configuration for redis servers
# see : https://github.com/mrniko/redisson/wiki/2.-Configuration

singleServerConfig:
  idleConnectionTimeout: 10000
  pingTimeout: 1000
  connectTimeout: 1000
  timeout: 1000
  retryAttempts: 1
  retryInterval: 1000
  reconnectionTimeout: 3000
  failedAttempts: 1
  password: 123456
  subscriptionsPerConnection: 5
  clientName: null
  address: 
    - "redis://192.168.39.100:6379"
  subscriptionConnectionMinimumIdleSize: 1
  subscriptionConnectionPoolSize: 25
  connectionMinimumIdleSize: 5
  connectionPoolSize: 100
  database: 0
  dnsMonitoring: false
  dnsMonitoringInterval: 5000
threads: 0
# Codec
codec: !<org.redisson.codec.SnappyCodec> {}
useLinuxNativeEpoll: false
eventLoopGroup: null

注意address的配置,配成数组格式,否则会报错。

4.hibernate实体类上加上@cache注解,在query查询上开启缓存就可以使用redis缓存了。

参考网址:http://wzalong.iteye.com/blog/2324290

                https://github.com/debop/hibernate-redis

                https://yq.aliyun.com/articles/551640#77

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值