一、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. solr 实现对经纬度的查询
  2. Zookeeper常用命令使用
  3. 关于Windows Firewall的一些资料
  4. boost::math模块使用逆高斯(或逆正态)分布的示例
  5. CRMEB移动端前端目录结构
  6. 上海大都会 H.A Simple Problem with Integers
  7. MTK 驱动(67)---深入MTK平台bootloader启动之【 lk -amp;gt; kernel】分析笔记
  8. emplode php|,字符串的分割/组合/逆序等
  9. HDU 6188 2017广西邀请赛:Duizi and Shunzi
  10. c语言鸢尾花智能分类,基于LogisticRegression的鸢尾花分类
  11. Assembly.CreateInstance()与Activator.CreateInstanc
  12. java面试笔试大全
  13. python批量转换图片格式_利用Python批量把PDF文件文件转换成图片格式
  14. Windows设置调节音量的快捷键
  15. App测试从入门到精通之功能测试
  16. vue部署到内网和外网配置简要说明
  17. JavaScript 普通函数的三种写法
  18. 华栖云联合阿里云发布“云上电视台” 实现媒体云端采编播存管
  19. android的wifi网卡移植详细过程已经通用驱动的问题
  20. 玩转SQLite4:SQLite数据插入与查看

热门文章

  1. Unity 鼠标悬停
  2. 盘点|世界流行的十大机械工程设计软件,你会用几种?
  3. 计算机博士 英语词汇,2017考博英语词汇
  4. python 打印直角三角形
  5. Tensor to img imge to tensor (pytorch的tensor转换)
  6. 中景合天部分工作内容摘要
  7. Go常见错误第14篇:过度使用getter和setter方法
  8. 东芝21vf6c_东芝开发21寸高清裸眼3D立体液晶屏
  9. 微信小程序蓝牙使用总结
  10. 苹果wifi网速慢怎么办_WiFi用着用着就断了?这样设置WiFi永不断网,大部分人不知道...