您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“SpringBoot如何實現redis緩存菜單列表”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“SpringBoot如何實現redis緩存菜單列表”這篇文章吧。
因為系統的菜單列表是不輕易改變的,所以不需要在每次請求的時候都去查詢數據庫,所以,在第一次根據用戶id請求到菜單列表的時候,可以把菜單列表的數據緩存在redis里,在第二次請求菜單列表的時候,可以直接在redis緩存里面獲取數據,從而減少對數據庫的操作,提升性能!首先,我們要下載redis到本地,然后在cmd終端打開redis的src目錄,然后運行redis-server即可開啟redis本地服務(mac),開啟了redis服務后,就要在項目中配置相關的redis的代碼了,首先在pom.xml中導入我們需要的包:
<!-- spring data redis依賴--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>2.5.1</version> </dependency> <!-- commons-pool2對象池依賴--> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.9.0</version> </dependency>
然后在config文件下創建ReidsConfig配置類文件:
/** * redis配置類 */ @Configuration public class RedisConfig { @Bean public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){ RedisTemplate<String,Object> redisTemplate=new RedisTemplate<>(); //String類型key序列器 redisTemplate.setKeySerializer(new StringRedisSerializer()); //String類型value序列器 redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); //Hash類型key序列器 redisTemplate.setHashKeySerializer(new StringRedisSerializer()); //Hash類型value序列器 redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer()); redisTemplate.setConnectionFactory(redisConnectionFactory); return redisTemplate; } }
這個配置文件主要是對String類型和hash類型的key和value做序列化操作;
接下來就是使用redis了,在我們需要引入redis的根據用戶id獲取菜單列表接口的實現類中,判斷下,如果菜單已經緩存在了redis中,則從redis中獲取數據返回,否則去查詢數據庫獲取數據:
/** * <p> * 菜單表 服務實現類 * </p> * * @author hhk * @since 2022-01-04 */ @Service public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IMenuService { @Autowired private MenuMapper menuMapper; @Autowired private RedisTemplate<String,Object> redisTemplate; /** * 根據用戶id查詢菜單列表 * @return */ @Override public List<Menu> getMenuByAdminId() { //getMenuByAdminId需要傳用戶id,這時候,要從security全局上下文中獲取用戶id,SecurityContextHolder.getContext().getAuthentication().getPrincipal()獲取當前用戶對象 Admin principal = (Admin) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); //獲取到用戶id Integer id = principal.getId(); ValueOperations<String, Object> valueOperations = redisTemplate.opsForValue(); List<Menu> menus=((List<Menu>) valueOperations.get("menu_" + id));//獲取redis緩存中的菜單列表 if(CollectionUtils.isEmpty(menus)){//如果是空,則從數據庫中獲取 menus= menuMapper.getMenuByAdminId(id); //將數據設置到redis中 valueOperations.set("menu_"+id,menus); } return menus; } }
以上是“SpringBoot如何實現redis緩存菜單列表”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。