package com.easyagu.liwei.util;

import redis.clients.jedis.BinaryClient;
import redis.clients.jedis.Jedis;

import java.util.List;
import java.util.Random;

/**
* todo
*/
public class TodoDemo {
/**
* @param args
*/
public static void main(String[] args) {
TodoDemo todoDemo = new TodoDemo();
Long userid = 12l;
for (int i = 0; i < 20; i++) {
todoDemo.addTodoEvent(userid, "第" + (i + 1) + "个待办事项");
}
//查询第一页待办事项
int pageNo = 1;
int pageSize = 10;
List<String> todoEventPage = null;
todoEventPage = todoDemo.findTodoEventByPage(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);
//为啥我插入的待办事项不成功?????
todoDemo.insertTodoEvent(userid, BinaryClient.LIST_POSITION.BEFORE, targetTodoEvent, "插入的待办事项000");
//重新分页查询第一页代办事项
todoEventPage = todoDemo.findTodoEventByPage(userid, pageNo, pageSize);
for (String todoEvent : todoEventPage) {
System.out.println(todoEvent);
}
//修改待办事项
int index2= random.nextInt(todoEventPage.size());
todoDemo.updateTodoEvent(userid,index2,"修改的数据");

//完成一个待办事项
todoDemo.finishTodoEvent(userid,todoEventPage.get(0));
//最后查询一次待办事项
todoEventPage = todoDemo.findTodoEventByPage(userid, pageNo, pageSize);
for (String todoEvent : todoEventPage) {
System.out.println(todoEvent);
}

}

private Jedis jedis = new Jedis("127.0.0.1");

public void addTodoEvent(long userId, String todoEvent) {
jedis.lpush("todo_event::" + userId, todoEvent);
}

;

/**
* 修改待办事项
*
* @param userId
* @param index
* @param updatedTodoEvent
*/
public void updateTodoEvent(long userId, int index, String updatedTodoEvent) {
jedis.lset("todo_event::" + userId, index, updatedTodoEvent);
}

/**
* 完成待办事项
*
* @param userId
* @param todoEvent
*/
public void finishTodoEvent(long userId, String todoEvent) {
jedis.lrem("todo_event::" + userId, 0, todoEvent);
}

;

/**
* 插入待办事项
*
* @param userId
* @param position
* @param todoEvent
* @param targetTodoEvent
*/
public void insertTodoEvent(long userId, BinaryClient.LIST_POSITION position, String todoEvent, String targetTodoEvent) {
jedis.linsert("todo_event::" + userId, position, targetTodoEvent, todoEvent);
}

;

/**
* 分页查询待办事项
*
* @param userId
* @param pageNo
* @param pageSize
* @return
*/
public List<String> findTodoEventByPage(Long userId, Integer pageNo, Integer pageSize) {
int startIndex = (pageNo - 1) * pageSize;
int endIndex = pageNo * pageSize - 1;
//返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。
return jedis.lrange("todo_event::" + userId, startIndex, endIndex);

}
}

待办事项-redis的更多相关文章

  1. Vuex 模块化实现待办事项的状态管理

    前言 在vue里,组件之间的作用域是独立的,父组件跟子组件之间的通讯可以通过prop属性来传参,但是在兄弟组件之间通讯就比较麻烦了.比如A组件要告诉一件事给B组件,那么A就要先告诉他们的爸组件,然后爸 ...

  2. 青否云 - 小程序待办事项vue开源系统

    青否云最新开源系统:小程序待办事项 vue-demo 青否云 vue demo 下载地址:https://github.com/qingful/vue-demo 官网 http://cloud.qin ...

  3. 青否云 - 小程序待办事项 wxapp开源系统

    青否云最新开源系统:小程序待办事项 wxapp-demo 青否云 小程序 demo 下载地址:https://github.com/qingful/wxapp-demo 官网 http://cloud ...

  4. 青否云 - 小程序待办事项 jquery开源系统

    青否云最新开源系统:小程序待办事项 jquery-demo 青否云 Jquery demo 下载地址:https://github.com/qingful/jquery-demo 官网 http:// ...

  5. Go For It ,一个灵活的待办事项列表程序

    导读 Go For It,是我们开源工具系列中的第十个工具,它将使你在 2019 年更高效,它在 Todo.txt 系统的基础上构建,以帮助你完成更多工作. 每年年初似乎都有疯狂的冲动想提高工作效率. ...

  6. todolist待办事项

    使用html/css原生js实现待办事项列表: 支持添加待办事项,删除待办事项,切换待办事项的状态(正在进行,已经完成) 支持对正在进行以及已经完成事项编辑(单击内容即可编辑) 源代码:链接:http ...

  7. Angular待办事项应用2

    todo组件 接上一篇,在根目录创建todo组件 命令行输入:ng g c todo 得到 文件结构 修改默认路由为todo: 然后打开浏览器:http://localhost:4200/ ,查看,t ...

  8. 个人待办事项工具的设计和搭建(IFE前端2015春季 任务3)

    这是我几个月之前的项目作品,花了相当的时间去完善.博客人气不高,但拿代码的人不少,所以一直处于保密状态.没有公开代码.但如果对你有帮助,并能提出指导意见的,我将十分感谢. IFE前端2015春季 任务 ...

  9. jQuery模仿ToDoList实现简单的待办事项列表

    功能:在文本框中输入待办事项按下回车后,事项会出现在未完成列表中:点击未完成事项前边的复选框后,该事项会出现在已完成列表中,反之亦然:点击删除按钮会删除该事项:双击事项可以修改事项的内容.待办事项的数 ...

随机推荐

  1. mysql select语句查询流程是怎么样的

    select查询流程是怎么样的 mysql select查询的数据是查询内存里面,如果没有查询的数据没有在内存,就需要mysql的innodb引擎读取磁盘,将数据加载的内存后在读取.这就体现了,mys ...

  2. javascript-原生-函数

    本节呢讲解js的函数部分,js函数部分总共分为两大类:1.自定义函数.2.系统函数 说白了,系统函数就是js自己内置的函数,其他的都属于自定义函数. 1.自定义函数 函数是完成指定功能的程序段,可以反 ...

  3. 攻防世界 杂项 10.2017_Dating_in_Singapore

    题目描述: 01081522291516170310172431-050607132027262728-0102030209162330-02091623020310090910172423-0201 ...

  4. 【做题记录】DP 杂题

    P2577 [ZJOI2004]午餐 $\texttt{solution}$ 想到贪心: 吃饭慢的先打饭节约时间, 所以先将人按吃饭时间从大到小排序. 状态: \(f[i][j]\) 表示前 \(i\ ...

  5. Luogu P1563 [NOIp2016提高组]玩具谜题 | 模拟

    题目链接 纯模拟题,没啥好说的,就是要判断地方有点多,一定要注意细节. #include<iostream> #include<cstdio> #include<fstr ...

  6. Swoft+Docker

    Docker 以下纯属个人理解: Docker就是一种虚拟机,将环境打包成镜像,等于做了一个Linux系统裁剪. 镜像就是我们安装系统的镜像,里面包含了你的代码和环境. 容器就是一个虚拟机,你可以用一 ...

  7. C++11 多线程同步 互斥锁 条件变量

    在多线程程序中,线程同步(多个线程访问一个资源保证顺序)是一个非常重要的问题,Linux下常见的线程同步的方法有下面几种: 互斥锁 条件变量 信号量 这篇博客只介绍互斥量和条件变量的使用. 互斥锁和条 ...

  8. 【JavaScript】JS的坚实基础

    前言 ​ 考虑到在后面的开发中,需要大量的使用js语言去进行开发,所以准备重新规整一下javascript的知识点,专门开了一个js的专栏,用来复习一下js语言.万事开头难,要是后面写的有问题的,欢迎 ...

  9. 使用silky脚手架构建微服务应用

    目录 模板简介 构建独立应用的模板Silky.App.Template 构建模块化应用的模板Silky.Module.Template 开源地址 在线文档 模板简介 使用 dotnet new 命令可 ...

  10. 【Python+postman接口自动化测试】(4)HTTP 协议

    前言 HTTP:超文本传输协议,是用于从WWW服务器传输超文本到本地浏览器的传输协议. HTTP协议是一种无状态协议,主要包含请求和相应两大部分. 请求(Request) get请求示范: GET h ...