利用redis實現定長的執行緒佇列

2021-08-14 22:11:41 字數 824 閱讀 6026

redis -- 首先就不做簡介啦,直接上**和功能

首先我們有乙個長度不定的佇列takslist用於接收所有的任務,然後有乙個定長的執行任務佇列runningtask用於控制正在執行的執行緒個數(3個)

1、模擬乙個生產者程序,用於不斷地產生任務

/**

* redis生產者程序

* yufeng on 2018/1/22

* 優先順序高的程序lpush-在棧頂,優先順序低的程序rpush-在棧底;pop採用lpop,每次只取棧頂元素,

* 再建立乙個map棧滿三個的時候ltrim清空即可

*/public class producer implements runnable

}catch (exception e)}}

}

2、模擬乙個消費者程序,用於不斷地完成任務,相當於執行緒執行完畢

/**

* redis消費者程序

利用AOP實現redis快取

1.定義註解 target elementtype.method 作用位置 retention retentionpolicy.runtime 什麼時候有效 public inte ce cachefind 2.使用註解 在方法上使用這個註解 override cachefind key iten ...

使用redis的zset實現簡單的延時佇列

一 需求切入點 在公司做的乙個系統業務需要有個定時提醒的功能 資料在mysql中 要求提醒的時間差精準到分鐘 解決方案有 使用定時器,每分鐘執行一次,查符合提醒的資料,發起提醒 資料庫連線與系統的負載都承受不住的!將待提醒資料提前查出存進redis中,根據提醒時間設定過期時間,做redis的過期監聽...

利用redis實現使用者簽到

很多 都提供了簽到功能 這裡不考慮資料落地事宜 並且需要展示最近乙個月的簽到情況,如果使用bitmap我們怎麼做?一言不合亮 redis new redis redis connect 127.0.0.1 使用者uid uid 1 記錄有uid的key cachekey sprintf sign d...