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. 洛谷4630APIO2018铁人两项(圆方树+dp)

    QWQ神仙题啊(据说是今年第一次出现圆方树的地方) 首先根据题目,我们就是求对于每一个路径\((s,t)\)他的贡献就是两个点之间的点数,但是图上问题我并没有办法很好的解决... 这时候考虑圆方树,我 ...

  2. 从网络通信的演进过程彻底搞懂Redis高性能通信的原理(全网最详细,建议收藏)

    我们一直说Redis的性能很快,那为什么快?Redis为了达到性能最大化,做了哪些方面的优化呢? 在深度解析Redis的数据结构 这篇文章中,其实从数据结构上分析了Redis性能高的一方面原因. 在目 ...

  3. fastjson反序列化-JdbcRowSetImpl利用链

    fastjson反序列化-JdbcRowSetImpl利用链 JdbcRowSetImpl利用链 fastjson反序列化JdbcRowSetImpl - Afant1 - 博客园 (cnblogs. ...

  4. 初学python-day11 函数3

    函数 1. global关键字 修改全局变量,声明函数内外使用同一个变量 示例: 1 name = 'xiaoming' 2 3 def test(): 4 global name 5 name = ...

  5. 半天撸一个简易版mybatis

    为什么需要持久层框架? 首先我们先看看使用原生jdbc存在的问题? public static void main(String[] args) { Connection connection = n ...

  6. rabbitmq生产者消息确认

    在使用 RabbitMQ 的时候,有时候当我们生产者发送一条消息到 RabbitMQ 服务器后,我们 生产者想知道消息是否到达了 RabbitMQ 服务器上.这个时候我们应该如何处理? 针对上述问题, ...

  7. luogu P2746 [USACO5.3]校园网Network of Schools 题解

    前言: 火星题... 但是我调了半天,最后看了题解才明白. Wtcl 解析: 显然先缩个点. 第一问,就是问多少入度为0的点. 第二问,抽象一下就是要添加一些边,让一个DAG变成一个SCC,求最小边数 ...

  8. GEOS使用记录

    由于需要计算GIS障碍物的缓冲区,所以研究了 一下GEOS库的使用,将使用的一些细节内容记录一下: 1.vs2010IDE无法编译较高版本的GEOS库,较高版本的库使用了更加高级的C++语法,如果想使 ...

  9. NOIP模拟86(多校19)

    T1 特殊字符串 解题思路 \(f_{i,j}\) 表示前 \(i\) 个字符中结尾为 \(j\) 的最大贡献. 转移枚举当前位置于之前位置结尾的组合加上贡献即可. 对于边界问题,容易发现选择 1 一 ...

  10. Gitlab-CI使用及.gitlab-ci.yml配置入门一篇就够了

    转载:Gitlab-CI使用及.gitlab-ci.yml配置入门一篇就够了 - 简书 (jianshu.com) 一. Gitlab-CI/CD使用场景 首先,公司使用Gitlab作为工作仓库进行代 ...