使用jedis操作redis常用方法
来源:互联网 发布:重庆时时彩 遗漏数据 编辑:程序博客网 时间:2024/06/06 09:11
,在redis入门及在商城案例中的使用中简单介绍了下使用jedis如何操作redis,但是其实方法是跟redis的操作大部分是相对应的。
1、String类型操作
public class StringTest { Jedis jedis; @Before//该注解下的方法在@Test执行之前执行 public void before(){ //创建连接 jedis = new Jedis("192.168.25.128",6379); } @After//该注解下的方法在@Test执行之后执行 public void after(){ //关闭连接 jedis.close(); } /* * 存储,获取,设置过期时间,key命令 */ @Test public void test() throws InterruptedException{ //1.存储值 jedis.set("name", "张三"); //2.取值 String name = jedis.get("name"); System.out.println(name); //3.key命令:查看有效期,-1表示持久化,-2表示不存在 Long t = jedis.ttl("name"); System.out.println(t); System.out.println("-------------------"); //4.key命令,对已经存在的key设置过期时间 jedis.expire("name", 5); while(true){ String name2 = jedis.get("name"); System.out.println(name2); System.out.println("有效期为:"+jedis.ttl("name")+"秒"); Thread.sleep(2000); } }
输出结果:张三-1-------------------张三有效期为:5秒张三有效期为:3秒张三有效期为:1秒null有效期为:-2秒
/* * 测试自增自减:前提,value值能解析为数字类型 * 删除 */ @Test public void test2(){ jedis.set("age", "18"); String age1 = jedis.get("age"); System.out.println("当前年龄:"+age1); Long age2 = jedis.decr("age"); System.out.println("一年前年龄为:"+age2); Long age3 = jedis.incr("age"); System.out.println("现在年龄又变回为:"+age3); //如果key不存在则忽略此操作 Long del = jedis.del("age1"); }
输出结果:当前年龄:18一年前年龄为:17现在年龄又变回为:18
/* * 批量存储和获取 */ @Test public void test3(){ jedis.mset("a1","mysql","a2","oracle","a3","sqlServer","a4", "redis","a5","mongodb","a6","hbase"); List<String> list = jedis.mget("a1","a2","a3","a4","a5","a6"); for (String s : list) { System.out.println(s); } }
输出结果:mysqloraclesqlServerredismongodbhbase
/* * 存储值的同时设置过期时间,判断key是否存在 */ @Test public void test4() throws InterruptedException{ //jedis.setex(key, 过期时间, value) jedis.setex("life", 5, "享受美好"); while(jedis.exists("life")){ System.out.println(jedis.get("life")); Thread.sleep(2000); } }
输出结果:在输出三个“享受美好”之后便不再输出享受美好享受美好享受美好
2、Hash类型操作
public class MapTest { Jedis jedis; @Before public void before(){ jedis = new Jedis("192.168.25.128",6379); } @After public void after(){ jedis.close(); } @Test public void test1(){ //1.存储值 jedis.hset("student", "name", "小李"); jedis.hset("student", "class", "小学生"); jedis.hset("student", "age", "10"); jedis.hset("student", "skill", "keng"); //2.获取指定值 获取名字 String name = jedis.hget("student", "name"); System.out.println(name); System.out.println("----------------------"); //3.获取存储的map Map<String, String> all = jedis.hgetAll("student"); Set<Entry<String,String>> set = all.entrySet(); Iterator<Entry<String, String>> iterator = set.iterator(); while (iterator.hasNext()) { Entry<String, String> entry = iterator.next(); String key = entry.getKey(); String value = entry.getValue(); System.out.println(key+":"+value); } System.out.println("------------------------------"); //4.获取map中全部key Set<String> keySet = jedis.hkeys("student"); for (String key : keySet) { System.out.println(key); } System.out.println("-------------------------------"); //5.获取map中全部values List<String> list = jedis.hvals("student"); for (String value : list) { System.out.println(value); } System.out.println("------------------"); //6.删除指定的值 删除map中class,name两对键值对 Long long1 = jedis.hdel("student", "class","name"); Set<String> set2 = jedis.hkeys("student"); for (String key : set2) { System.out.println(key); } System.out.println("-------------------"); //7.判断map是否存在 Boolean e = jedis.hexists("student", "class"); System.out.println("class是否存在:"+e); System.out.println("-----------------"); //8.自增自减,可以指定增加减少的数值 jedis.hincrBy("student", "age", 2); System.out.println(jedis.hget("student", "age")); }}
输出结果:小李----------------------skill:kengname:小李class:小学生age:10------------------------------nameclassageskill-------------------------------10keng小李小学生------------------ageskill-------------------class是否存在:false-----------------2年后年龄为:12
String跟Hash是最常见的类型,在实习这段时间也都只用到这两种,所以我觉得不管怎样这两种至少应该掌握。
3、List类型操作
public class ListTest { Jedis jedis; @Before public void before(){ jedis = new Jedis("192.168.25.128",6379); } @After public void after(){ jedis.close(); } @Test public void test(){ //1.存储值(左边开始)。当成栈(子弹匣),先进先出,入栈 jedis.lpush("scores", "100","90","80","70","60"); //右边开始存 jedis.rpush("scores", "50","40","30","20","10"); //2.取值(左边开始),可以说是同时移除了该值,出栈 String lv = jedis.lpop("scores"); //右边开始取 String rv= jedis.rpop("scores"); System.out.println("左边取为:"+lv); System.out.println("右边取为:"+rv); System.out.println("--------------------"); //3.取所有值(只有左边开始取)0 -1表示取所有位置,位置是[start,end] //redis命令行操作的时候已经演示过 List<String> list = jedis.lrange("scores", 0, -1); for (String value : list) { System.out.println(value); } System.out.println("-----------"); //4.插队,44插入到100后面,注:没有什么rinsert()方法 jedis.linsert("scores",BinaryClient.LIST_POSITION .AFTER, "100", "44"); List<String> list2 = jedis.lrange("scores", 0, -1); for (String value : list2) { System.out.println(value); } List<String> list3 = jedis.lrange("scores", 0, 3); for (String value : list3) { System.out.println(value); } }}
输出结果:左边取为:60右边取为:10--------------------70809010050403020-----------7080901004450403020---------------708090100
4、Set类型操作
public class JedisTest { Jedis jedis; @Before public void before(){ jedis = new Jedis("192.168.25.128",6379); } @After public void after(){ jedis.close(); } /* * 测试添加,取值,移除,判断 */ @Test public void test1(){ //1.存储 jedis.sadd("names", "Tom","Jack","Harry","Lucy","laowang"); //2.获取set中全部记录,取出来的跟存储的顺序不一样 Set<String> members = jedis.smembers("names"); for (String member : members) { System.out.println(member); } //3.移除指定数据 jedis.srem("names","Tome","Jack"); //4.判断某值是否为set中成员 Boolean tom = jedis.sismember("names", "Tome"); System.out.println("Tom在名单里吗:"+tom); }
输出结果:JackHarryLucyTomlaowangTom在名单里吗:false
/* * 差集,交集,并集 */ @Test public void test2(){ jedis.sadd("set1", "a","b","c","d"); jedis.sadd("set2", "b","c","d","e"); //1.差集 set1中有set2中没有的 Set<String> sdiff = jedis.sdiff("set1","set2"); for (String d : sdiff) { System.out.println(d); } System.out.println("----------------"); //2.交集 Set<String> sinter = jedis.sinter("set1","set2"); for (String in : sinter) { System.out.println(in); } System.out.println("----------------"); //3.并集 Set<String> sunion = jedis.sunion("set1","set2"); for (String un : sunion) { System.out.println(un); } }
输出结果:a----------------dcb----------------deacb
5、Zset(有序Set)类型操作
public class SortedSetTest { Jedis jedis; @Before public void before(){ jedis = new Jedis("192.168.25.128",6379); } @After public void after(){ jedis.close(); } @Test public void test1(){ //1.添加 jedis.zadd("table", 1, "a"); jedis.zadd("table", 3, "b"); jedis.zadd("table", 2, "c"); jedis.zadd("table", 5, "d"); jedis.zadd("table", 4, "e"); //2.取值 0 -1表示取所有,可以自己指定开始结束位置,跟list一样 //默认根据分数由低到高排 Set<String> table = jedis.zrange("table", 0, -1); for (String t : table) { System.out.println(t); } System.out.println("-----------------"); //3.排序,由高到低排 Set<String> table2 = jedis.zrevrange("table", 0, -1); for (String t : table2) { System.out.println(t); } System.out.println("-----------------"); //4.修改某个值的分数 jedis.zincrby("table", 7, "a"); Set<String> table3 = jedis.zrevrange("table", 0, -1); for (String t : table3) { System.out.println(t); } }}
输出结果:acbed-----------------debca-----------------adebc
阅读全文
1 0
- 使用jedis操作redis常用方法
- 使用Jedis操作redis
- 使用Jedis操作Redis
- 使用Jedis操作redis
- 使用Jedis操作Redis
- 使用Jedis操作redis
- 使用Jedis操作redis
- 使用Jedis操作redis
- 使用Jedis操作redis
- 使用Jedis操作redis
- 使用Jedis操作Redis
- Java使用Jedis操作Redis
- 使用Jedis操作Redis数据库
- Java使用Jedis操作Redis
- Jedis使用java操作Redis
- 使用Jedis操作Redis(笔记)
- Java 使用Jedis操作Redis
- java 使用jedis操作redis
- Kurskal应用
- 1小时后要用的材料,要3个人审批,怎么办?
- [微信小程序]微信小程序点击事件返回值的target分析
- C# 组件开发,简介+ hello word 级别教程!
- chrome 插件开发入门
- 使用jedis操作redis常用方法
- 划分树
- POJ 3037 Skiing (搜索 或 spfa)
- android性能优化之布局优化
- Android动画学习(五)之属性动画实现Tween的效果和高级属性示例
- c#微信服务器配置
- Codeforces Round #286 (Div. 2) A. Mr. Kitayuta's Gift
- 可变参数与自动拆箱和自动装箱
- 计算几何小结:叉积