List 的一些案例
509字约2分钟
2024-08-10
秒杀公平队列
lpush:左边推入
rpop:右边弹出
rpush:右边推入
lpop:左边弹出
/**
* 秒杀抢购请求入队
* @param secKillRequest
*/
public void enqueueSecKillRequest(String secKillRequest) {
jedis.lpush("sec_kill_request_queue", secKillRequest);
}
/**
* 秒杀抢购请求出队
* @return
*/
public String dequeueSecKillRequest() {
return jedis.rpop("sec_kill_request_queue");
}
系统待办事项
/**
* @ClassName TodoDemo
* @Desciption OA 系统待办事项的案例
* @Author MaRui
* @Date 2021/8/29 15:53
* @Version 1.0
*/
public class TodoDemo {
private static Jedis jedis = new Jedis("127.0.0.1", 6379);
public static void main(String[] args) {
TodoDemo demo = new TodoDemo();
// 添加 10 个待办事项
long userId = 1;
for (int i = 0; i < 10; i++) {
demo.addTodoEvent(userId, "第" + (i + 1) + "个待办事项");
}
// 查询第一页待办事项
int pageNo = 1;
int pageSize = 10;
List<String> todoEventPage = demo.findTodoEventPage(userId, pageNo, pageSize);
for (String todoEvent : todoEventPage) {
System.out.println(todoEvent);
}
// 插入有一个待办事项
Random random = new Random();
int index = random.nextInt(todoEventPage.size());
String targetTodoEvent = todoEventPage.get(index);
System.out.println("插入待办事项目标事项:" + targetTodoEvent);
demo.inserTodoEvent(userId, ListPosition.BEFORE, targetTodoEvent, "插入待办事项");
// 重新查询第一页待办事项
todoEventPage = demo.findTodoEventPage(userId, pageNo, pageSize);
for (String todoEvent : todoEventPage) {
System.out.println(todoEvent);
}
// 修改一个待办事项
index = random.nextInt(todoEventPage.size());
demo.updateTodoEvent(userId, index, "修改后的待办事项");
// 完成一个待办事项
demo.finishTodoEvent(userId, todoEventPage.get(0));
// 最后查询一次待办事项
todoEventPage = demo.findTodoEventPage(userId, pageNo, pageSize);
for (String todoEvent : todoEventPage) {
System.out.println(todoEvent);
}
}
/**
* 添加待办事项
*/
public void addTodoEvent(long userId, String todoEvent) {
jedis.lpush("todo_event::" + userId, todoEvent);
}
/**
* 分页查询待办事项列表
*/
public List<String> findTodoEventPage(long userId, int pageNo, int pageSize) {
int startIndex = (pageNo - 1) * pageSize;
int endIndex = pageNo * pageSize - 1;
return jedis.lrange("todo_event::" + userId, startIndex, endIndex);
}
/**
* 插入待办事项
*/
public void inserTodoEvent(long userId,
ListPosition position,
String targetTodoEvent,
String todoEvent) {
jedis.linsert("todo_event::" + userId, position, targetTodoEvent, todoEvent);
}
/**
* 修改一个待办事项
* @param userId
* @param index
* @param updateTodoEvent
*/
public void updateTodoEvent(long userId, int index, String updateTodoEvent) {
jedis.lset("todo_event::" + userId, index, updateTodoEvent);
}
/**
* 完成一个待办事项
* @param userId
* @param todoEvent
*/
public void finishTodoEvent(long userId, String todoEvent) {
jedis.lrem("todo_event::" + userId, 0, todoEvent);
}
}
注册之后发送邮件
- brpop:阻塞式获取
/**
* 发送邮件任务入列
* @param sendMailTask
*/
public void enqueueSendMailTask(String sendMailTask) {
jedis.lpush("send_mail_task_queue", sendMailTask);
}
/**
* 阻塞式获取发送邮件任务
* @return
*/
public List<String> takeSendMailTask() {
return jedis.brpop(5, "send_mail_task_queue");
}