一、jedis

jedis 是 redis推荐的java客户端。通过Jedis我们可以很方便地使用java代码的方式,对redis进行操作。jedis使用起来比较简单,它的操作方法与redis命令相类似。对于初次使用redis的人来说,上手更快,更能适应。jedis在github上的下载地址为https://github.com/xetorthio/jedis 。本例子使用maven,需要添加如下依赖:

<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.6.0</version>
</dependency>

二、相关实例
  以下只是对数据的一些基本操作。
  获取Jedis操作对象

Jedis jedis;@Before
public void connectionTest() {
jedis = new Jedis("127.0.0.1", 6379);//redis的地址以及连接端口
//jedis.auth("helloworld");  //开启密码验证(配置文件中为 requirepass helloworld)的时候需要执行该方法
}

Jedis对key的操作

@Test
public void keyTest() throws UnsupportedEncodingException {
System.out.println(jedis.flushDB());// 清空数据
System.out.println(jedis.echo("hello"));// 判断key否存在
System.out.println(jedis.exists("foo"));jedis.set("key", "values");
jedis.set("key2", "values");
System.out.println(jedis.exists("key"));// 判断是否存在// 如果数据库没有任何key,返回nil,否则返回数据库中一个随机的key。
String randomKey = jedis.randomKey();
System.out.println("randomKey: " + randomKey);// 设置60秒后该key过期
jedis.expire("key", 60);// key有效毫秒数
System.out.println(jedis.pttl("key"));// 移除key的过期时间
jedis.persist("key");// 获取key的类型, "string", "list", "set". "none" none表示key不存在
System.out.println("type: " + jedis.type("key"));// 导出key的值
byte[] bytes = jedis.dump("key");
System.out.println(new String(bytes));// 将key重命名
jedis.renamenx("key", "keytest");
System.out.println("key是否存在: " + jedis.exists("key"));// 判断是否存在
System.out.println("keytest是否存在: " + jedis.exists("keytest"));// 判断是否存在// 查询匹配的key
// KEYS       * 匹配数据库中所有 key 。
// KEYS       h?llo 匹配 hello , hallo 和 hxllo 等。
// KEYS       h*llo 匹配 hllo 和 heeeeello 等。
// KEYS       h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。
// 特殊符号用 \ 隔开。
Set<String> set = jedis.keys("k*");
System.out.println(set);// 删除key
jedis.del("key");
System.out.println(jedis.exists("key"));
}

Jedis对字符串(String)的相关操作

@Test
public void stringTest() {
jedis.set("hello", "hello");
System.out.println(jedis.get("hello"));// 使用append 向字符串后面添加
jedis.append("hello", " world");
System.out.println(jedis.get("hello"));// set覆盖字符串
jedis.set("hello", "123");
System.out.println(jedis.get("hello"));// 设置过期时间
jedis.setex("hello2", 2, "world2");
System.out.println(jedis.get("hello2"));
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
}
System.out.println(jedis.get("hello2"));// 一次添加多个key-value对
jedis.mset("a", "1", "b", "2");
// 获取a和b的value
List<String> valus = jedis.mget("a", "b");
System.out.println(valus);// 批量删除
jedis.del("a", "b");
System.out.println(jedis.exists("a"));
System.out.println(jedis.exists("b"));
}

Jedis对链表(Lists)的操作

@Test
public void listTest() {
String key = "mylist";
jedis.del(key);// 队列添加元素
jedis.rpush(key, "aaaa");
jedis.rpush(key, "aaaa");
jedis.rpush(key, "bbbb");
jedis.rpush(key, "cccc");
jedis.rpush(key, "cccc");// 队列长度
System.out.println("lenth: " + jedis.llen(key));// 打印队列,从索引0开始,到倒数第1个(全部元素)
System.out.println("all elements: " + jedis.lrange(key, 0, -1));// 索引为1的元素
System.out.println("index of 1: " + jedis.lindex(key, 1));// 设置队列里面一个元素的值,当index超出范围时会返回一个error。
jedis.lset(key, 1, "aa22");
System.out.println("index of 1: " + jedis.lindex(key, 1));// 从队列的右边入队一个元素
jedis.rpush(key, "-2", "-1");// 先-2,后-1入队列
System.out.println("all elements: " + jedis.lrange(key, 0, -1));// 从队列的左边入队一个或多个元素
jedis.lpush(key, "second element", "first element");// 先second
// element,后first
// elementF入队列
System.out.println("all elements: " + jedis.lrange(key, 0, -1));// 从队列的右边出队一个元素
System.out.println(jedis.rpop(key));
// 从队列的左边出队一个元素
System.out.println(jedis.lpop(key));
System.out.println("all elements: " + jedis.lrange(key, 0, -1));// count > 0: 从头往尾移除值为 value 的元素,count为移除的个数。
// count < 0: 从尾往头移除值为 value 的元素,count为移除的个数。
// count = 0: 移除所有值为 value 的元素。
jedis.lrem(key, 1, "cccc");
System.out.println("all elements: " + jedis.lrange(key, 0, -1));// 即最右边的那个元素也会被包含在内。 如果start比list的尾部下标大的时候,会返回一个空列表。
// 如果stop比list的实际尾部大的时候,Redis会当它是最后一个元素的下标。
System.out.println(jedis.lrange(key, 0, 2));
System.out.println("all elements: " + jedis.lrange(key, 0, -1));// 删除区间以外的元素
System.out.println(jedis.ltrim(key, 0, 2));
System.out.println("all elements: " + jedis.lrange(key, 0, -1));
}

Jedis对集合(Sets)的操作

@Test
public void testSet() {
// 清空数据
System.out.println(jedis.flushDB());
String key = "myset";
String key2 = "myset2";// 集合添加元素
jedis.sadd(key, "aaa", "bbb", "ccc");
jedis.sadd(key2, "bbb", "ccc", "ddd");// 获取集合里面的元素数量
System.out.println(jedis.scard(key));// 获得两个集合的交集,并存储在一个关键的结果集
jedis.sinterstore("destination", key, key2);
System.out.println(jedis.smembers("destination"));// 获得两个集合的并集,并存储在一个关键的结果集
jedis.sunionstore("destination", key, key2);
System.out.println(jedis.smembers("destination"));// key集合中,key2集合没有的元素,并存储在一个关键的结果集
jedis.sdiffstore("destination", key, key2);
System.out.println(jedis.smembers("destination"));// 确定某个元素是一个集合的成员
System.out.println(jedis.sismember(key, "aaa"));// 从key集合里面随机获取一个元素
System.out.println(jedis.srandmember(key));// aaa从key移动到key2集合
jedis.smove(key, key2, "aaa");
System.out.println(jedis.smembers(key));
System.out.println(jedis.smembers(key2));// 删除并获取一个集合里面的元素
System.out.println(jedis.spop(key));// 从集合里删除一个或多个元素
jedis.srem(key2, "ccc", "ddd");
System.out.println(jedis.smembers(key2));
}

Jedis对有序集合(Sorted Sets)的操作

@Test
public void testSortSet() {
// 清空数据
System.out.println(jedis.flushDB());
String key = "mysortset";Map<String, Double> scoreMembers = new HashMap<String, Double>();
scoreMembers.put("aaa", 1001.0);
scoreMembers.put("bbb", 1002.0);
scoreMembers.put("ccc", 1003.0);// 添加数据
jedis.zadd(key, 1004.0, "ddd");
jedis.zadd(key, scoreMembers);// 获取一个排序的集合中的成员数量
System.out.println(jedis.zcard(key));// 返回的成员在指定范围内的有序集合,以0表示有序集第一个成员,以1表示有序集第二个成员,以此类推。
// 负数下标,以-1表示最后一个成员,-2表示倒数第二个成员
Set<String> coll = jedis.zrange(key, 0, -1);
System.out.println(coll);// 返回的成员在指定范围内的逆序集合
coll = jedis.zrevrange(key, 0, -1);
System.out.println(coll);// 元素下标
System.out.println(jedis.zscore(key, "bbb"));// 删除元素
System.out.println(jedis.zrem(key, "aaa"));
System.out.println(jedis.zrange(key, 0, -1));// 给定值范围内的成员数
System.out.println(jedis.zcount(key, 1002.0, 1003.0));
}

Jedis对哈希(Hashs)的操作

@Test
public void testHash() {
// 清空数据
System.out.println(jedis.flushDB());
String key = "myhash";
Map<String, String> hash = new HashMap<String, String>();
hash.put("aaa", "11");
hash.put("bbb", "22");
hash.put("ccc", "33");// 添加数据
jedis.hmset(key, hash);
jedis.hset(key, "ddd", "44");// 获取hash的所有元素(key值)
System.out.println(jedis.hkeys(key));// 获取hash中所有的key对应的value值
System.out.println(jedis.hvals(key));// 获取hash里所有元素的数量
System.out.println(jedis.hlen(key));// 获取hash中全部的域和值,以Map<String, String> 的形式返回
Map<String, String> elements = jedis.hgetAll(key);
System.out.println(elements);// 判断给定key值是否存在于哈希集中
System.out.println(jedis.hexists(key, "bbb"));// 获取hash里面指定字段对应的值
System.out.println(jedis.hmget(key, "aaa", "bbb"));// 获取指定的值
System.out.println(jedis.hget(key, "aaa"));// 删除指定的值
System.out.println(jedis.hdel(key, "aaa"));
System.out.println(jedis.hgetAll(key));// 为key中的域 field 的值加上增量 increment
System.out.println(jedis.hincrBy(key, "bbb", 100));
System.out.println(jedis.hgetAll(key));
}

Jedis操作事务

@Test
public void testTransaction() {
Transaction t = jedis.multi();
t.set("hello", "world");
Response<String> response = t.get("hello");t.zadd("foo", 1, "barowitch");
t.zadd("foo", 0, "barinsky");
t.zadd("foo", 0, "barikoviev");
Response<Set<String>> sose = t.zrange("foo", 0, -1); //  返回全部相应并以有序集合的方式返回
System.out.println(response);
System.out.println(sose);
t.exec(); // 此行注意,不能缺少String foolbar = response.get(); // Response.get() 可以从响应中获取数据int soseSize = sose.get().size(); // sose.get() 会立即调用set方法
System.out.println(foolbar);
System.out.println(sose.get());
}

 Jedis操作管道

@Testpublic void testTransactionPipeling() {Pipeline p = jedis.pipelined();//开一个管道p.set("fool", "bar");p.zadd("foo", 1, "barowitch");p.zadd("foo", 0, "barinsky");p.zadd("foo", 0, "barikoviev");Response<String> pipeString = p.get("fool");Response<Set<String>> sose = p.zrange("foo", 0, -1);System.out.println(pipeString);System.out.println(sose);p.sync();//提交System.out.println("==========");System.out.println(p.get("fool"));System.out.println(p.zrange("foo", 0, -1));int soseSize = sose.get().size();Set<String> setBack = sose.get();System.out.println(soseSize);System.out.println(setBack);}

jedis的操作和使用相关推荐

  1. Redis-学习笔记04【Jedis代码操作】

    Java后端 学习路线 笔记汇总表[黑马程序员] Redis-学习笔记01[Redis环境搭建] Redis-学习笔记02[Redis命令操作] Redis-学习笔记03[Redis持久化] Redi ...

  2. docker安装redis,使用jedis轻松操作redis

    之前,已经在虚拟机的linux环境中安装好了docker,再安装redis就会变得非常简单. docker search redis 查询docker容器支持的redis版本 默认安装latest最新 ...

  3. Redis学习(5)-Jedis(Java操作redis数据库技术)

    Java连接redis 一,导入jar包 Redis有什么命令,Jedis就有什么方法 设置防火墙 在Linux上面运行如下代码: 单实例:Jedis实例: package com.jedis.dem ...

  4. Jedis操作Redis数据库

    添加Maven依赖: 1 <dependencies> 2 <!-- 单元测试 --> 3 <dependency> 4 <groupId>junit& ...

  5. java连接并操作redis_java 使用 jedis 连接 redis 并进行简单操作

    packagetest;importjava.util.HashMap;importjava.util.Iterator;importjava.util.List;importjava.util.Ma ...

  6. Redis 笔记之 Java 操作 Redis(Jedis)

    Java 操作 Redis 环境准备 引入依赖 创建 jedis 对象 操作 Key 相关 API 操作 String 相关 API 操作 List 相关 API 操作 Set 的相关 API 操作 ...

  7. 使用Spring操作Redis的key-value数据

    前言 最近工作一直忙的不可开交,小Alan已经很久没有和大家分享知识了,在深圳待了两年多,依然感觉自己还是个小菜鸟,工作中还是会遇到很多自己在短期内无法搞定的事情,每当这个时候总是会感觉到很沮丧,就会 ...

  8. Jedis使用教程完整版

    2019独角兽企业重金招聘Python工程师标准>>> 摘要:概述Jedis是Redis官方推荐的Java连接开发工具.要在Java开发中使用好Redis中间件,必须对Jedis熟悉 ...

  9. Redis-学习笔记05【Jedis连接池】

    Java后端 学习路线 笔记汇总表[黑马程序员] Redis-学习笔记01[Redis环境搭建] Redis-学习笔记02[Redis命令操作] Redis-学习笔记03[Redis持久化] Redi ...

最新文章

  1. 学霸学长如何第一时间收到接口报错?不用测试妹子再质疑你是不是接口挂了
  2. 每天一道LeetCode-----重新实现next_permutation
  3. php获取当前操作系统类型 PHP_OS
  4. python处理文本数据
  5. JEECG 商业版本和开源版本有什么区别呢?
  6. android.mk添加静态库,Android Gradle添加静态库
  7. matlab 画光束等相面,一种新型贝塞尔光束器件的设计方法
  8. 氩焊机器人编程_谈一谈铝合金的脉冲MIG焊
  9. eval函数python_Python eval()函数
  10. 包你满意的Git命令大全,快来收藏!
  11. 解读:【小爱同学】智能问答系统
  12. 亲戚关系关系算法java程序_python版亲戚关系计算器
  13. CodeForces - 1117G
  14. html网页表格线条设置,css怎么设置表格边框?
  15. linux 脚本 过滤 词,linux学习之shell脚本 - 文本过滤
  16. java 使用Spire.Doc实现Word文档插入图片
  17. web前端是什么?需要掌握什么技术
  18. 那年杏花微雨,你说你是DOM
  19. 《三天给你聊清楚redis》第1天先唠唠redis是个啥(18629字)
  20. IT运维的几个关键绩效指标

热门文章

  1. 亲身经历3家1000人互联网公司,分享 25 条潜规则!
  2. MySQL进阶系列: 一文详解explain各字段含义
  3. Javacript中父节点、子节点、兄节点的简单用法[0306]
  4. css三角形 增涨,CSS3实现三角形不断放大效果
  5. Java应届生大学四年怎么做,可以毕业就进入华为工作,上个月成功拿到阿里P7offer
  6. 联想小新java_联想小新700 i7 完美efi 黑果 mac 10.14
  7. 解除UVW贴图的疑惑
  8. 活动 | 旷视「智见AI」SpringCamp圆满结营 (附回放链接)
  9. spyder python 使用_如何在spyder中使用vpython?
  10. 【AtCoder】Japanese Student Championship 2019 Qualification题解