2018-03-26
springboot-集成redis
springboot 评论:0 浏览:149

转载请注明出处:https://oldnoop.tech/c/178.html

引入依赖

配置缓存

修改application.properties

#配置redis
spring.cache.type=redis
spring.redis.host=localhost
spring.redis.port=6379

增加缓存配置类

说明:这个配置是为了使用spring提供的缓存框架

启动类加注解@EnableCaching

使用缓存

spring的缓存框架存储redis数据的特点


    使用zset存储一个缓存的所有对象的key,这个zset的key是 "缓存名称~keys"
        比如,如下缓存注解的名称是memberCache,在redis中使用zset,key是memberCache~keys
        @Cacheable(value="memberCache",key="'account_'+#account")
        public Member findByAccountCache(String account){
            return accountMapper.findUserByAccount(account);
        }
    然后对每个key,存储一个字符串的值,是将实体类对象序列化后存储到redis的字符串
        存储用string,key为account_zhangsan, 值为序列化的字符串

代码示例

//根据账号查询缓存
//使用账号作为缓存的key,返回值类型Member作为缓存的value
@Cacheable(value="memberCache",key="'account_'+#account")
public Member findByAccountCache(String account){
    return accountMapper.findUserByAccount(account);
}

//根据账号查询缓存
//使用账号作为缓存的key,返回值类型Member作为缓存的value
@Cacheable(value="memberCache",key="'account_'+#account")
public Member findByAccountCache(String account){
    return accountMapper.findUserByAccount(account);
}

//更新数据库的时候
//直接清除缓存,下次会重新从数据库取
//dbMember是旧数据,username,email,phone都可以作为账号,
//member是新数据
@Caching(
        evict = { @CacheEvict(value="memberCache",
                    key = "'id_'+#member.id", beforeInvocation = true),
                  @CacheEvict(value="memberCache",
                      key = "'account_'+#oldMember.username", beforeInvocation = true),
                  @CacheEvict(value="memberCache",
                      key = "'account_'+#oldMember.email", beforeInvocation = true),
                  @CacheEvict(value="memberCache",
                      key = "'account_'+#oldMember.phone", beforeInvocation = true)
        })
public void updateMemberCache(Member oldMember, Member member){
    memberMapper.updateByPrimaryKeySelective(member);
}

//根据id查询缓存
//使用id作为缓存的key,返回值类型Member作为缓存的value
@Cacheable(value="memberCache",key="'id_'+#id")
public Member getByIdCache(Long id){
    Member DBmember = memberMapper.selectByPrimaryKey(id);
    return DBmember;
}

 



  • 转载请注明出处:https://oldnoop.tech/c/178.html

Copyright © 2018 oldnoop.tech. All Rights Reserved

鄂ICP备2023022735号-1