spring redistemplate,redistemplate redission
urityContextHolder.getContext().getAuthentication().getPrincipal()).getId();ValueOperations<String, Object> valueOperations =redisTemplate.opsForValue();//查询缓存中是否有数据List<Menu> menus = (List<Menu>) valueOperations.get("menu_" + adminId);if (CollectionUtils.isEmpty(menus)){menus = menuMapper.getMenusByAdminId(adminId);valueOperations.set("menu_"+adminId,menus);}return menus;}
使用Redisrepository访问redis
需要声明一配置项用于启用Repository以及模板
public class RedisConfig { @Bean public LettuceConnectionFactory redisConnectionFactory() { RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration("127.0.0.1", 6567); redisStandaloneConfiguration.setPassword("password");//如果有密码需要通过这个函数设置密码 return new LettuceConnectionFactory(redisStandaloneConfiguration); }@Bean public JedisConnectionFactory jedisConnectionFactory(){ //如果使用jedis作为客户端也需要声明该bean 使用与上面的类似}@Bean public RedisTemplate<?,?> redisTemplate(){ RedisTemplate<String,Object> template = new RedisTemplate<>(); RedisSerializer<String> stringSerializer = new StringRedisSerializer(); JdkSerializationRedisSerializer jdkSerializationRedisSerializer = new JdkSerializationRedisSerializer(); template.setConnectionFactory(redisConnectionFactory()); template.setKeySerializer(stringSerializer); template.setHashKeySerializer(stringSerializer); template.setValueSerializer(stringSerializer); template.setHashValueSerializer(jdkSerializationRedisSerializer); template.setEnableTransactionSupport(true); template.afterPropertiesSet(); return template; }}
实例:
entity
import lombok.Data;import lombok.experimental.Accessors;import org.springframework.data.redis.core.RedisHash;import org.springframework.data.redis.core.index.Indexed;@Accessors(chain = true)@Data@RedisHash(value="Student",timeToLive = 10)public class stu implements Serializable { public enum Gender{ MALE,FEMALE } private String id; @Indexed private String name; private Gender gender; //RedisHash注解用于声明该实体将被存储与RedisHash中,如果需要使用repository的数据访问形式,这个注解是必须用到的 timetoLive为实体对象在数据库的有效期 //@Indexed用于标注需要作为查询条件的属性}
写接口repository:
@Repositorypublic interface StuRepository extends CrudRepository<stu,String> {stu findByName(String name);//自定义查询方法,使用了@Indexed的name属性查询}
调用:
@SpringBootTestpublic class RedisApplicationTests { @Autowired StuRepository stuRepository; @Test void testSave(){ stu student = new stu().setId("0002").setName("xiaoming").setGender(stu.Gender.FEMALE); stuRepository.save(student);//根据id更新或者新增记录 } @Test void testFindBy(){ //使用主键查询 assert stuRepository.findById("0002").isPresent(); //根据自定义方法查询 assert stuRepository.findByName("xiaoming") !=null; }}
到此这篇关于springboot使用redisRepository和redistemplate操作redis的过程解析的文章就介绍到这了,更多相关springboot整合redis内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。