最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Springboot使用Redis中ZSetOperations實現(xiàn)博客訪問量

 更新時間:2024年01月26日 16:55:52   作者:遲意..  
在日常的網(wǎng)站使用中,經(jīng)常會碰到頁面的訪問量,本文主要介紹了Springboot使用Redis中ZSetOperations實現(xiàn)博客訪問量,具有一定的參考價值,感興趣的可以了解一下

1.在application.yml中Redis配置信息

spring:
  redis:
    host: 127.0.0.1
    port: 6379
    password: 12345678

2.在pom.xml中加載依賴

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

3.配置Redis Template

@Configuration
public class RedisConfig {
  @Bean("redisTemplate")
  public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {
      // 1.創(chuàng)建RedisTemplate對象
      RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
      // 2.加載Redis配置
      redisTemplate.setConnectionFactory(lettuceConnectionFactory);
      // 3.配置key序列化
      RedisSerializer<?> stringRedisSerializer = new StringRedisSerializer();
      redisTemplate.setKeySerializer(stringRedisSerializer);
      redisTemplate.setHashKeySerializer(stringRedisSerializer);
      // 4.配置Value序列化
      Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
      ObjectMapper objMapper = new ObjectMapper();
      objMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
      objMapper.activateDefaultTyping(objMapper.getPolymorphicTypeValidator(), ObjectMapper.DefaultTyping.NON_FINAL);
      jackson2JsonRedisSerializer.setObjectMapper(objMapper);
      redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
      redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
      // 5.初始化RedisTemplate
      redisTemplate.afterPropertiesSet();
      return redisTemplate;
  }
  @Bean
  public ZSetOperations<String, Object> zSetOperations(RedisTemplate<String, Object> redisTemplate) {
    return redisTemplate.opsForZSet();
  }
}

4.操作說明

在Spring環(huán)境中,可以@Autowired自動注入方式注入操作Redis對象。比如:RedisTemplate、ZSetOperations。

 @Autowired
  private RedisTemplate redisTemplate;
 @Autowired
  private ZSetOperations zSetOperations;

更新瀏覽量(不用去更新到mysql了)

     //這個完全采用redis設計就可以 不用查詢數(shù)據(jù)庫 把閱讀量完全加入到緩存中  
    public void updateReadCount(Integer blogId) {
        zSetOperations.incrementScore(BLOG_KEY, blogId, 1);
        //blogMapper.updateReadCount(blogId); 不用在mysql數(shù)據(jù)庫更新了
    }

取出榜單TopK(效率提高不用在數(shù)據(jù)庫中查出所有的然后取前20)

    public List<Blog> selectTop() {
        List<Blog> blogList = new ArrayList<>();
        Long size = zSetOperations.size(BLOG_KEY);
        Set<Object> zset;
        if(size > TopN){
            zset = zSetOperations.reverseRange(BLOG_KEY, 0, TopN - 1);
        }else{
            zset = zSetOperations.reverseRange(BLOG_KEY, 0, - 1);
        }
        for(Object x:zset){
            blogList.add(blogMapper.selectById((int)x));
        }
        return blogList;
    }

顯示瀏覽量(直接設定到mysql屬性就好)

        Double score = zSetOperations.score(BLOG_KEY, blog.getId());
        int readCount = (score != null) ? score.intValue() : 0;
        blog.setReadCount(readCount);

總結

如果要效率提高,必須得犧牲空間,本操作還可以進一步優(yōu)化!

比如把blog全部存到Redis,再找前TopK時候就不用去根據(jù)blog ID去mysql數(shù)據(jù)庫搜索,直接可以輸出

但是如果博客過多的話 占用Redis內存太大

到此這篇關于Springboot 使用Redis中ZSetOperations實現(xiàn)博客訪問量的文章就介紹到這了,更多相關Springboot 博客訪問量內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Struts2學習教程之自定義類型轉換器的方法

    Struts2學習教程之自定義類型轉換器的方法

    類型轉換器的作用是將請求中的字符串或字符串數(shù)組參數(shù)與action中的對象進行相互轉換。下面這篇文章主要給大家介紹了關于Struts2學習教程之自定義類型轉換器的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-05-05
  • SpringBoot3.x打包Docker容器的實現(xiàn)

    SpringBoot3.x打包Docker容器的實現(xiàn)

    這篇文章主要介紹了SpringBoot3.x打包Docker容器的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • Java RSA加密解密實現(xiàn)方法分析【附BASE64 jar包下載】

    Java RSA加密解密實現(xiàn)方法分析【附BASE64 jar包下載】

    這篇文章主要介紹了Java RSA加密解密實現(xiàn)方法,結合實例形式分析了java基于第三方類庫javabase64-1.3.1.jar實現(xiàn)RSA加密解密功能的具體步驟與相關操作技巧,需要的朋友可以參考下
    2017-10-10
  • 深入理解Spring中RabbitMQ的Channel

    深入理解Spring中RabbitMQ的Channel

    這篇文章主要介紹了深入理解Spring中RabbitMQ的Channel,在RabbitMq中,channel表示邏輯連接或者叫虛擬連接,是棣屬于TCP連接的,一個TCP連接里可以創(chuàng)建多個channel,在Rabbit MQ里,消息的發(fā)送和接收都是基于channel的,需要的朋友可以參考下
    2023-08-08
  • Spring細數(shù)兩種代理模式之靜態(tài)代理和動態(tài)代理概念及使用

    Spring細數(shù)兩種代理模式之靜態(tài)代理和動態(tài)代理概念及使用

    代理是一種設計模式,提供了對目標對象另外的訪問方式,即通過代理對象訪問目標對象??梢圆恍薷哪繕藢ο?,對目標對象功能進行拓展。在我們學習Spring的時候就會發(fā)現(xiàn),AOP(面向切面編程)的底層就是代理
    2023-02-02
  • SpringBoot項目啟動報錯踩坑實戰(zhàn)記錄

    SpringBoot項目啟動報錯踩坑實戰(zhàn)記錄

    這篇文章主要給大家介紹了關于SpringBoot項目啟動報錯踩坑的相關資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2023-02-02
  • 帶你入門Java的數(shù)組

    帶你入門Java的數(shù)組

    這篇文章主要給大家介紹了關于Java中數(shù)組的定義和使用的相關資料,,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-07-07
  • java 實現(xiàn)Comparable接口排序,升序、降序、倒敘

    java 實現(xiàn)Comparable接口排序,升序、降序、倒敘

    這篇文章主要介紹了java 實現(xiàn)Comparable接口排序,升序、降序、倒敘,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Springboot接收文件與發(fā)送文件實例教程

    Springboot接收文件與發(fā)送文件實例教程

    最近工作中遇到個需求,springboot簡單的上傳文檔或者圖片,并且進行操作,操作完后進行保存指定路徑,下面這篇文章主要給大家介紹了關于Springboot接收文件與發(fā)送文件的相關資料,需要的朋友可以參考下
    2023-05-05
  • IDEA中配置Tomcat全過程

    IDEA中配置Tomcat全過程

    文章介紹了在IDEA中配置Tomcat的六步流程,包括添加服務器、配置部署選項、設置應用服務器及啟動,并提及Maven依賴可能因約定大于配置導致問題,需檢查依賴版本或配置文件以確保生效
    2025-08-08

最新評論

西充县| 平果县| 奇台县| 收藏| 容城县| 桂平市| 罗定市| 呼伦贝尔市| 韶关市| 蕉岭县| 惠州市| 南岸区| 嘉峪关市| 龙游县| 商南县| 高邑县| 满洲里市| 蓝田县| 榆树市| 汶川县| 夏邑县| 烟台市| 当阳市| 连南| 抚松县| 南江县| 灵宝市| 子长县| 开原市| 平定县| 灌南县| 广平县| 隆德县| 镇宁| 双江| 浦北县| 靖安县| 开远市| 屏山县| 灵丘县| 阜宁县|