91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot如何實現redis緩存菜單列表

發布時間:2022-01-21 09:15:44 來源:億速云 閱讀:268 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“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緩存菜單列表”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吴堡县| 淮滨县| 乌兰县| 汉沽区| 施甸县| 运城市| 阜平县| 尚义县| 丰都县| 定陶县| 繁昌县| 赤水市| 桃江县| 山西省| 奉节县| 买车| 瑞安市| 天镇县| 尉氏县| 周口市| 丹巴县| 略阳县| 大名县| 盐城市| 九江县| 富锦市| 明水县| 洪洞县| 乌兰浩特市| 香格里拉县| 新民市| 勐海县| 台前县| 平湖市| 思南县| 新余市| 贡觉县| 嵊州市| 皋兰县| 平阴县| 迁安市|