springboot redis cacheable,spring boot redis cache的key怎么用

科技资讯 投稿 25400 0 评论

springboot redis cacheable,spring boot redis cache的key怎么用

以下内容主要是针对遇上spring boot redis cache的key怎么用等问题,我们该怎么处理呢。下面这篇文章将为你提供一个解决思路,希望能帮你解决到相关问题。

Spring boot redis cache的key概述

在Spring boot应用的开发中,使用Redis缓存来加快数据的查询速度以提高应用的性能是非常常见的。在使用Redis缓存时,为了在不同的缓存数据之间进行区分和识别,我们通常会使用Cache的键值(key)来对Redis缓存进行识别和区分。Spring boot应用中使用Redis缓存的过程中,使用的缓存键值key的依据是封装在Spring boot Redis Cache中的CacheKeyGenerator实现类。在使用Spring boot Redis Cache进行应用开发时,理解和使用Cache的键值key是非常重要的。

Spring boot redis cache的key生成方式

在Spring boot Redis Cache中生成Cache的键值key采用的是Spring中CacheKey的实现类SimpleCacheKey的方式。在SimpleCacheKey的实现类中,它是通过将注解的参数和方法参数进行序列化,生成一个哈希值用于作为缓存key的值。在使用Spring boot Redis Cache中,缓存的键值key会包含以下三个部分:

    缓存名称(包含名称前缀)
  1. 方法名称
  2. 参数(每个参数都会被序列化为一个字符串,然后通过"-split-"链接在一起)

public class SimpleCacheKey implements CacheKey {
  private final Object[] params;
  // ... 其他代码
  public SimpleCacheKey(Object[] element) {
    this.params = element;
  }
  public SimpleCacheKey(Object[] element, int hashCode) {
    this.params = element;
    this.hashCode = hashCode;
  }
  // 哈希值生成方式
  public int hashCode() {
    if (this.hashCode != 0) {
        return this.hashCode;
    }
    int hashCode = ObjectUtils.nullSafeHashCode(target);
    hashCode = 31 * hashCode + method.hashCode();
    for (Object obj : this.params) {
        hashCode = 31 * hashCode + ObjectUtils.nullSafeHashCode(obj);
    }
    this.hashCode = hashCode;
    return hashCode;
  }
}

Spring boot redis cache的key使用方式

在使用Spring boot Redis Cache进行开发的过程中,使用Cache的key的方式非常简单。只需要在需要进行缓存的方法上添加Cacheable或者Cacheput注解,并设置相应的缓存名称即可。基本使用代码范例如下所示:


@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;
	// 查询用户列表并且进行缓存处理
    @Cacheable(value="userCache", keyGenerator = "cacheKeyGenerator")
    public List<User> listUser() {
        return userDao.listUser();
    }
    // 更新用户并且清除缓存处理
    @CachePut(value="userCache", keyGenerator = "cacheKeyGenerator")
    public User updateUser(User user) throws Exception {
        userDao.updateUser(user);
        return user;
    }
}

总结

以上就是为你整理的spring boot redis cache的key怎么用全部内容,希望文章能够帮你解决相关问题,更多请关注本站相关栏目的其它相关文章!

编程笔记 » springboot redis cacheable,spring boot redis cache的key怎么用

赞同 (121) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽