Redis学习笔记(4)-List
package cn.com; import java.util.List; import redis.clients.jedis.Jedis;
import redis.clients.jedis.BinaryClient.LIST_POSITION; public class Redis_List {
public static Jedis redis = new Jedis("localhost", 6379);// 连接redis /**
* 返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。
* */
public static void lrange(){
redis.flushDB();//清除数据
/**初始化数据*/
redis.lpush("languages", "english","chain");
redis.lpush("languages", "english"); /**取数据*/
List<String> list=redis.lrange("languages", 0, -1);
for(String s:list){
System.out.println("s:"+s);
}
}
/**
* 将一个或多个值 value 插入到列表 key 的表头
* 如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头:
* 如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。
* 当 key 存在但不是列表类型时,返回一个错误。
* */
public static void lpush(){
redis.flushDB();//清除数据
redis.lpush("languages", "english","chain");
redis.lpush("languages", "english");//加入重复元素
redis.lpush("languages", "1","2","3");
List<String> list=redis.lrange("languages", 0, -1);
for(String s:list){
System.out.println("s:"+s);
} } /**
* LPUSHX key value
* 将值 value 插入到列表 key 的表头,当且仅当 key 存在并且是一个列表。
* 和 LPUSH 命令相反,当 key 不存在时, LPUSHX 命令什么也不做。
* */
public static void lpushx(){
redis.flushDB();//清除数据
redis.lpushx("languages", "english");
List<String> list=redis.lrange("languages", 0, -1);
for(String s:list){
System.out.println("s:"+s);
}
} /**
* RPUSH key value [value ...]
* 将一个或多个值 value 插入到列表 key 的表尾(最右边)。
* 如果 key 不存在,一个空列表会被创建并执行 RPUSH 操作。
* 当 key 存在但不是列表类型时,返回一个错误。
* */
public static void rpush(){
redis.flushDB();//清除数据
redis.rpush("languages", "english","chain");
redis.rpush("languages", "english");//加入重复元素
redis.rpush("languages", "1","2","3");//加入重复元素
List<String> list=redis.lrange("languages", 0, -1);
for(String s:list){
System.out.println("s:"+s);
}
} /**
* LPUSHX key value
* 将值 value 插入到列表 key 的尾,当且仅当 key 存在并且是一个列表。
* 和 LPUSH 命令相反,当 key 不存在时, LPUSHX 命令什么也不做。
* */
public static void rpushx(){
redis.flushDB();//清除数据
redis.rpush("languages", "1","2","3");//加入重复元素
redis.rpushx("languages", "english");
List<String> list=redis.lrange("languages", 0, -1);
for(String s:list){
System.out.println("s:"+s);
}
} /**
* 移除并返回列表 key 的头元素。
* 当 key 不存在时,返回 nil 。
* */
public static void lpop(){
redis.flushDB();//清除数据
redis.lpush("languages", "1","2","3","4","5");
String str=redis.lpop("languages");
List<String> list=redis.lrange("languages", 0, -1); System.out.println("被移除的元素:"+str); System.out.println("剩下的元素列表:");
for(String s:list){
System.out.print(""+s+" ");
}
} /**
* 移除并返回列表 key 的尾元素。
* 当 key 不存在时,返回 nil 。
* */
public static void rpop(){
redis.flushDB();//清除数据
redis.lpush("languages", "1","2","3","4","5");
String str=redis.rpop("languages");
List<String> list=redis.lrange("languages", 0, -1); System.out.println("被移除的元素:"+str); System.out.println("剩下的元素列表:");
for(String s:list){
System.out.print(""+s+" ");
}
} /**
* 如果给定 key 内至少有一个非空列表,那么弹出遇到的第一个非空列表的头元素,
* 并和被弹出元素所属的列表的名字一起,组成结果返回给调用者
* */
public static void blpop(){
redis.flushDB();//清除数据
//redis.lpush("languages", "a","b","c","d","e");//初始化数据
redis.lpush("base", "a","b","c","d");//初始化数据
List<String> list=redis.blpop(1000,"base");
for(String s:list){
System.out.println(s+" ");
}
List<String> list2=redis.lrange("base", 0, -1);
for(String s:list2){
System.out.println("剩余"+s+" ");
}
} /**
* 如果给定 key 内至少有一个非空列表,那么弹出遇到的第一个非空列表的尾元素,
* 并和被弹出元素所属的列表的名字一起,组成结果返回给调用者
* */
public static void brpop(){
redis.flushDB();//清除数据 redis.lpush("base", "a","b","c","d");//初始化数据
List<String> list=redis.brpop(1000,"base");
for(String s:list){
System.out.println(s+" ");
}
List<String> list2=redis.lrange("base", 0, -1);
for(String s:list2){
System.out.println("剩余"+s+" ");
}
} /**
* 从头部弹出一个元素,将弹出的数据放入新的数组中 与方法 (rpoplpush)相同使用
* 当列表 source 为空时, BRPOPLPUSH 命令将阻塞连接,直到等待超时,或有另一个客户端对 source 执行 LPUSH 或 RPUSH 命令为止。
* 超时参数 timeout 接受一个以秒为单位的数字作为值。超时参数设为 0 表示阻塞时间可以无限期延长(block indefinitely) 。
* */
public static void brpoplpush(){
redis.flushDB();//清除数据
redis.lpush("base", "a","b","c","d");//初始化数据
String s=redis.brpoplpush("base", "dest",0); System.out.println("s:"+s);
List<String> list=redis.lrange("base", 0, -1);
for(String str:list){
System.out.println("base list"+str+" ");
}
List<String> list1=redis.lrange("dest", 0, -1);
for(String str:list1){
System.out.println("dest list:"+str+" ");
}
} /**
* 从头部弹出一个元素,将弹出的数据放入新的数组中
* */
public static void rpoplpush(){
redis.flushDB();//清除数据
redis.lpush("base", "a","b","c","d");//初始化数据
String s=redis.rpoplpush("base", "dest");
System.out.println("弹出的元素:"+s);
List<String> list=redis.lrange("base", 0, -1);
for(String str:list){
System.out.println("base list"+str+" ");
}
List<String> list1=redis.lrange("dest", 0, -1);
for(String str:list1){
System.out.println("dest list:"+str+" ");
}
} /**
* LREM key count value
* 根据参数 count 的值,移除列表中与参数 value 相等的元素。
* count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。
* count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。
* count = 0 : 移除表中所有与 value 相等的值。
* */
public static void lrem(){
redis.flushDB();//清除数据
redis.lpush("base", "a","b","c","d","e","f","g","h");//初始化数据 Long index=redis.lrem("base", 0, "a");//移除与 集合里面有a的元素
System.out.println(index); List<String> list=redis.lrange("base", 0, -1);
System.out.println("========剩余元素==========");
for(String str:list){
System.out.println( str+" ");
}
} /**
* LSET key index value
*将列表 key 下标为 index 的元素的值设置为 value 。
*当 index 参数超出范围,或对一个空列表( key 不存在)进行 LSET 时,返回一个错误。
* */
public static void lset(){
redis.flushDB();//清除数据
redis.lpush("base", "a","b","c","d","e","f","g","h");//初始化数据
redis.lset("base", 6, "2b");//将b元素设置为2b List<String> list=redis.lrange("base", 0, -1);
for(String s:list){
System.out.println(s);
}
} /**
* 让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
* 举个例子,执行命令 LTRIM list 4 6 ,表示只保留列表 list 的4 到 6 元素,其余元素全部删除。
* */
public static void ltrim(){
redis.flushDB();//清除数据
String [] s=new String[]{"a","b","c","d","e","f","g","h"};
redis.lpush("base", s);//初始化数据
redis.ltrim("base", 4, 6);//值保留b,c,d 对应的索引是4,5,6 多有被保留下来 List<String> list=redis.lrange("base", 0, -1);
for(String str:list){
System.out.println(str);
}
} /**
* 返回列表 key 的长度。
* 如果 key 不存在,则 key 被解释为一个空列表,返回 0 .
* 如果 key 不是列表类型,返回一个错误
* */
public static void llen(){
redis.flushDB();//清除数据
redis.lpush("base", "a","b","c","d","e","f","g","h");//初始化数据 Long length=redis.llen("base");
System.out.println("长度:"+length);
} /**
* 返回列表 key 中,下标为 index 的元素。
* 下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。
* 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
* 如果 key 不是列表类型,返回一个错误。
* */
public static void lindex(){
redis.flushDB();//清除数据
redis.lpush("base", "a","b","c","d","e","f","g","h");//初始化数据
String s=redis.lindex("base", 2);
System.out.println(s);
} /**
* LINSERT key BEFORE|AFTER pivot value
* 将值 value 插入到列表 key 当中,位于值 pivot 之前或之后。
* 当 pivot 不存在于列表 key 时,不执行任何操作。pivot 指的数组中的元素
* 当 key 不存在时, key 被视为空列表,不执行任何操作。
* 如果 key 不是列表类型,返回一个错误。
* */
public static void linsert(){
redis.flushDB();//清除数据
redis.lpush("base", "a","b","c","d","e","f","g","h");//初始化数据
redis.linsert("base", LIST_POSITION.BEFORE, "b", "2b");//在b 之前插入2b
//redis.linsert("base", LIST_POSITION.AFTER, "b", "2b");//在b 之后插入2b
List<String> list=redis.lrange("base", 0, -1);
for(String str:list){
System.out.println(str);
} } public static void main(String [] args){ linsert();
}
}
Redis学习笔记(4)-List的更多相关文章
- redis 学习笔记(6)-cluster集群搭建
上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...
- Redis学习笔记~目录
回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...
- Redis学习笔记4-Redis配置详解
在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redi ...
- Redis学习笔记7--Redis管道(pipeline)
redis是一个cs模式的tcp server,使用和http类似的请求响应协议.一个client可以通过一个socket连接发起多个请求命令.每个请求命令发出后client通常会阻塞并等待redis ...
- Redis学习笔记一:数据结构与对象
1. String(SDS) Redis使用自定义的一种字符串结构SDS来作为字符串的表示. 127.0.0.1:6379> set name liushijie OK 在如上操作中,name( ...
- Redis学习笔记之ABC
Redis学习笔记之ABC Redis命令速查 官方帮助文档 中文版本1 中文版本2(反应速度比较慢) 基本操作 字符串操作 set key value get key 哈希 HMSET user:1 ...
- (转)redis 学习笔记(1)-编译、启动、停止
redis 学习笔记(1)-编译.启动.停止 一.下载.编译 redis是以源码方式发行的,先下载源码,然后在linux下编译 1.1 http://www.redis.io/download 先 ...
- Redis学习笔记(二)-key相关命令【转载】
转自 Redis学习笔记(二)-key相关命令 - 点解 - 博客园http://www.cnblogs.com/leny/p/5638764.html Redis支持的各种数据类型包括string, ...
- Redis学习笔记(三)Redis支持的5种数据类型的总结
继续Redis学习笔记(二)来说说剩余的三种数据类型. 三.列表类型(List) 1.介绍 列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的一段片段.列表类型内部是 ...
- Redis学习笔记(二)Redis支持的5种数据类型的总结之String和Hash
引言 在Redis学习笔记(一)中我们已经会安装并且简单使用Redis了,接下来我们一起来学习下Redis支持的5大数据类型. 简介 Redis是REmote DIctionary Server(远程 ...
随机推荐
- js:语言精髓笔记5----语言分类
计算模型:源于对计算过程的不同认识: 1.基于不同计算模型一般分为://教科书的一般分类 命令式语言: 函数式语言: 逻辑式语言: 面向对象程序设计语言: 2.基于程序本质分类: //编程的经典法则 ...
- 阿里云ECS(云服务器)之产品简介
参考阿里产品文档:https://docs.aliyun.com/?spm=5176.100054.3.1.ywnrMX#/pub/ecs/product-introduction/concept
- 找规律 SGU 107 987654321 problem
题目地址:http://acm.sgu.ru/problem.php?contest=0&problem=107 /* 题意:n位数的平方的后面几位为987654321的个数 尼玛,我看描述这 ...
- LightOJ1125 Divisible Group Sums(DP)
题目问从N个数中取出M个数,有多少种取法使它们的和能被D整除. dp[i][j][k]表示,前i个数取出j个数模D的余数为k的方案数 我用“我为人人”的方式来转移,就从i到i+1转移,对于第i+1个数 ...
- CodeForces Round 195 Div2
A. Vasily the Bear and Triangletime limit per test1 secondmemory limit per test256 megabytesinputsta ...
- Hadoop科普文——常见的45个问题解答(CSDN)
Hadoop科普文——常见的45个问题解答 1.Hadoop集群可以运行的3个模式? 单机(本地)模式 伪分布式模式 全分布式模式 2. 单机(本地)模式中的注意点? 在单机模式(standalon ...
- 一个spring jdbc实例
一.使用示例 (1)springJdbcContext.xml <?xml version="1.0" encoding="UTF-8"?> < ...
- 移动WEBAPP开发常规CSS样式总结
我所使用到的HTML页面标签: Section,div,artical,p,ol,ul,li,header,footer,span,form,input,label,h1,h2,h3 :详细说明我就不 ...
- COJ968 WZJ的数据结构(负三十二)
WZJ的数据结构(负三十二) 难度级别:D: 运行时间限制:5000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 给你一棵N个点的无根树,边上均有权值,每个点上有 ...
- Android使用AsyncTask实现可以断点续传的DownloadManager功能
http://www.it165.net/pro/html/201211/4210.html 最近做项目卡壳了,要做个Android的应用市场,其他方面都还好说,唯独这个下载管理算是给我难住了,究其原 ...