Redis 不仅是使用命令来操作,现在基本上主流的语言都有客户端代码支持,比如

java、C、C#、C++、php、Node.js、Go 等。

在官方网站里列一些 Java 的客户端,有 Jedis、Redisson、Jredis、JDBC-Redis、等

其中官方推荐使用 Jedis 和 Redisson。 在企业中用的最多的就是 Jedis,下面我们就重

点学习下 Jedis。

Jedis 同样也是托管在 github 上,地址:https://github.com/xetorthio/jedis.

1、Jedis的使用:

添加依赖:

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

获取jedis对象,使用jedis对象的方法操作redis数据库的数据:

// 创建一个 Jedis 的连接
Jedis jedis = new Jedis(“127.0.0.1”, 6379);
// 密码认证 如果设置了密码,就需要进行认证
jedis.auth(“offcn123”);
// 执行 redis 命令
jedis.set(“mytest”, “hello world, this is jedis client!”);

各种方法实例:


import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.SortingParams;import java.util.Iterator;
import java.util.Set;public class JunitJedis {@Testpublic void jedis(){Jedis jedis=new Jedis("127.0.0.1", 6379);jedis.set("strKey","hello world");System.out.println(jedis.get("strKey"));System.out.println(jedis.ping());}@Testpublic void jedisPool(){//jedis池配置信息JedisPoolConfig config=new JedisPoolConfig();config.setMinIdle(10);config.setMaxWaitMillis(3000);config.setMaxTotal(100);//创建jedispool对象JedisPool pool=new JedisPool(config,"127.0.0.1", 6379);//从jedispool中获取一个jedis对象Jedis jedis = pool.getResource();jedis.set("strKey","hello world");System.out.println(jedis.get("strKey"));//释放连接jedis.close();}/*** 测试keys*/@Testpublic void KeyOperate() {Jedis jedis = new Jedis("127.0.0.1", 6379);System.out.println("======================key==========================");// 清空数据System.out.println("清空库中所有数据:"+jedis.flushDB());// 判断key否存在System.out.println("判断key999键是否存在:"+jedis.exists("key999"));System.out.println("新增key001,value001键值对:"+jedis.set("key001", "value001"));System.out.println("判断key001是否存在:"+jedis.exists("key001"));// 输出系统中所有的keySystem.out.println("新增key002,value002键值对:"+jedis.set("key002", "value002"));System.out.println("系统中所有键如下:");Set<String> keys = jedis.keys("*");Iterator<String> it=keys.iterator() ;while(it.hasNext()){String key = it.next();System.out.println(key);}// 删除某个key,若key不存在,则忽略该命令。System.out.println("系统中删除key002: "+jedis.del("key002"));System.out.println("判断key002是否存在:"+jedis.exists("key002"));// 设置 key001的过期时间System.out.println("设置 key001的过期时间为5秒:"+jedis.expire("key001", 5));try{Thread.sleep(2000);}catch (InterruptedException e){}// 查看某个key的剩余生存时间,单位【秒】.永久生存或者不存在的都返回-1System.out.println("查看key001的剩余生存时间:"+jedis.ttl("key001"));// 移除某个key的生存时间System.out.println("移除key001的生存时间:"+jedis.persist("key001"));System.out.println("查看key001的剩余生存时间:"+jedis.ttl("key001"));// 查看key所储存的值的类型System.out.println("查看key所储存的值的类型:"+jedis.type("key001"));/** 一些其他方法:1、修改键名:jedis.rename("key6", "key0");*             2、将当前db的key移动到给定的db当中:jedis.move("foo", 1)*/}/*** 测试String类型数据*/@Testpublic void StringOperate() {Jedis jedis = new Jedis("127.0.0.1", 6379);System.out.println("======================String_1==========================");// 清空数据System.out.println("清空库中所有数据:"+jedis.flushDB());System.out.println("=============增=============");jedis.set("key001","value001");jedis.set("key002","value002");jedis.set("key003","value003");System.out.println("已新增的3个键值对如下:");System.out.println(jedis.get("key001"));System.out.println(jedis.get("key002"));System.out.println(jedis.get("key003"));System.out.println("=============删=============");System.out.println("删除key003键值对:"+jedis.del("key003"));System.out.println("获取key003键对应的值:"+jedis.get("key003"));System.out.println("=============改=============");//1、直接覆盖原来的数据System.out.println("直接覆盖key001原来的数据:"+jedis.set("key001","value001-update"));System.out.println("获取key001对应的新值:"+jedis.get("key001"));//2、直接覆盖原来的数据System.out.println("在key002原来值后面追加:"+jedis.append("key002","+appendString"));System.out.println("获取key002对应的新值"+jedis.get("key002"));System.out.println("=============增,删,查(多个)=============");/*** mset,mget同时新增,修改,查询多个键值对* 等价于:* jedis.set("name","ssss");* jedis.set("jarorwar","xxxx");*/System.out.println("一次性新增key201,key202,key203,key204及其对应值:"+jedis.mset("key201","value201","key202","value202","key203","value203","key204","value204"));System.out.println("一次性获取key201,key202,key203,key204各自对应的值:"+jedis.mget("key201","key202","key203","key204"));System.out.println("一次性删除key201,key202:"+jedis.del(new String[]{"key201", "key202"}));System.out.println("一次性获取key201,key202,key203,key204各自对应的值:"+jedis.mget("key201","key202","key203","key204"));System.out.println();//jedis具备的功能jedis中也可直接使用,下面测试一些前面没用过的方法System.out.println("======================String_2==========================");// 清空数据System.out.println("清空库中所有数据:"+jedis.flushDB());System.out.println("=============新增键值对时防止覆盖原先值=============");System.out.println("原先key301不存在时,新增key301:"+jedis.setnx("key301", "value301"));System.out.println("原先key302不存在时,新增key302:"+jedis.setnx("key302", "value302"));System.out.println("当key302存在时,尝试新增key302:"+jedis.setnx("key302", "value302_new"));System.out.println("获取key301对应的值:"+jedis.get("key301"));System.out.println("获取key302对应的值:"+jedis.get("key302"));System.out.println("=============超过有效期键值对被删除=============");// 设置key的有效期,并存储数据System.out.println("新增key303,并指定过期时间为2秒"+jedis.setex("key303", 2, "key303-2second"));System.out.println("获取key303对应的值:"+jedis.get("key303"));try{Thread.sleep(3000);}catch (InterruptedException e){}System.out.println("3秒之后,获取key303对应的值:"+jedis.get("key303"));System.out.println("=============获取原值,更新为新值一步完成=============");System.out.println("key302原值:"+jedis.getSet("key302", "value302-after-getset"));System.out.println("key302新值:"+jedis.get("key302"));System.out.println("=============获取子串=============");System.out.println("获取key302对应值中的子串:"+jedis.getrange("key302", 5, 7));}@Testpublic void ListOperate() {Jedis jedis = new Jedis("127.0.0.1", 6379);System.out.println("======================list==========================");// 清空数据System.out.println("清空库中所有数据:"+jedis.flushDB());System.out.println("=============增=============");jedis.lpush("stringlists", "vector");jedis.lpush("stringlists", "ArrayList");jedis.lpush("stringlists", "vector");jedis.lpush("stringlists", "vector");jedis.lpush("stringlists", "LinkedList");jedis.lpush("stringlists", "MapList");jedis.lpush("stringlists", "SerialList");jedis.lpush("stringlists", "HashList");jedis.lpush("numberlists", "3");jedis.lpush("numberlists", "1");jedis.lpush("numberlists", "5");jedis.lpush("numberlists", "2");System.out.println("所有元素-stringlists:"+jedis.lrange("stringlists", 0, -1));System.out.println("所有元素-numberlists:"+jedis.lrange("numberlists", 0, -1));System.out.println("=============删=============");// 删除列表指定的值 ,第二个参数为删除的个数(有重复时),后add进去的值先被删,类似于出栈System.out.println("成功删除指定元素个数-stringlists:"+jedis.lrem("stringlists", 2, "vector"));System.out.println("删除指定元素之后-stringlists:"+jedis.lrange("stringlists", 0, -1));// 删除区间以外的数据System.out.println("删除下标0-3区间之外的元素:"+jedis.ltrim("stringlists", 0, 3));System.out.println("删除指定区间之外元素后-stringlists:"+jedis.lrange("stringlists", 0, -1));// 列表元素出栈System.out.println("出栈元素:"+jedis.lpop("stringlists"));System.out.println("元素出栈后-stringlists:"+jedis.lrange("stringlists", 0, -1));System.out.println("=============改=============");// 修改列表中指定下标的值jedis.lset("stringlists", 0, "hello list!");System.out.println("下标为0的值修改后-stringlists:"+jedis.lrange("stringlists", 0, -1));System.out.println("=============查=============");// 数组长度System.out.println("长度-stringlists:"+jedis.llen("stringlists"));System.out.println("长度-numberlists:"+jedis.llen("numberlists"));// 排序/** list中存字符串时必须指定参数为alpha,如果不使用SortingParams,而是直接使用sort("list"),* 会出现"ERR One or more scores can't be converted into double"*/SortingParams sortingParameters = new SortingParams();sortingParameters.alpha();sortingParameters.limit(0, 3);System.out.println("返回排序后的结果-stringlists:"+jedis.sort("stringlists",sortingParameters));System.out.println("返回排序后的结果-numberlists:"+jedis.sort("numberlists"));// 子串:  start为元素下标,end也为元素下标;-1代表倒数一个元素,-2代表倒数第二个元素System.out.println("子串-第二个开始到结束:"+jedis.lrange("stringlists", 1, -1));// 获取列表指定下标的值System.out.println("获取下标为2的元素:"+jedis.lindex("stringlists", 2)+"\n");}@Testpublic void SetOperate() {Jedis jedis = new Jedis("127.0.0.1", 6379);// 清空数据System.out.println("清空库中所有数据:"+jedis.flushDB());System.out.println("=============增=============");System.out.println("向sets集合中加入元素element001:"+jedis.sadd("sets", "element001"));System.out.println("向sets集合中加入元素element002:"+jedis.sadd("sets", "element002"));System.out.println("向sets集合中加入元素element003:"+jedis.sadd("sets", "element003"));System.out.println("向sets集合中加入元素element004:"+jedis.sadd("sets", "element004"));System.out.println("查看sets集合中的所有元素:"+jedis.smembers("sets"));System.out.println();System.out.println("=============删=============");System.out.println("集合sets中删除元素element003:"+jedis.srem("sets", "element003"));System.out.println("查看sets集合中的所有元素:"+jedis.smembers("sets"));/*System.out.println("sets集合中任意位置的元素出栈:"+jedis.spop("sets"));//注:出栈元素位置居然不定?--无实际意义System.out.println("查看sets集合中的所有元素:"+jedis.smembers("sets"));*/System.out.println();System.out.println("=============改=============");System.out.println();System.out.println("=============查=============");System.out.println("判断element001是否在集合sets中:"+jedis.sismember("sets", "element001"));System.out.println("循环查询获取sets中的每个元素:");Set<String> set = jedis.smembers("sets");Iterator<String> it=set.iterator() ;while(it.hasNext()){Object obj=it.next();System.out.println(obj);}System.out.println();System.out.println("=============集合运算=============");System.out.println("sets1中添加元素element001:"+jedis.sadd("sets1", "element001"));System.out.println("sets1中添加元素element002:"+jedis.sadd("sets1", "element002"));System.out.println("sets1中添加元素element003:"+jedis.sadd("sets1", "element003"));System.out.println("sets1中添加元素element002:"+jedis.sadd("sets2", "element002"));System.out.println("sets1中添加元素element003:"+jedis.sadd("sets2", "element003"));System.out.println("sets1中添加元素element004:"+jedis.sadd("sets2", "element004"));System.out.println("查看sets1集合中的所有元素:"+jedis.smembers("sets1"));System.out.println("查看sets2集合中的所有元素:"+jedis.smembers("sets2"));System.out.println("sets1和sets2交集:"+jedis.sinter("sets1", "sets2"));System.out.println("sets1和sets2并集:"+jedis.sunion("sets1", "sets2"));System.out.println("sets1和sets2差集:"+jedis.sdiff("sets1", "sets2"));//差集:set1中有,set2中没有的元素}@Testpublic void SortedSetOperate() {Jedis jedis = new Jedis("127.0.0.1", 6379);System.out.println("======================zset==========================");// 清空数据System.out.println(jedis.flushDB());System.out.println("=============增=============");System.out.println("zset中添加元素element001:"+jedis.zadd("zset", 7.0, "element001"));System.out.println("zset中添加元素element002:"+jedis.zadd("zset", 8.0, "element002"));System.out.println("zset中添加元素element003:"+jedis.zadd("zset", 2.0, "element003"));System.out.println("zset中添加元素element004:"+jedis.zadd("zset", 3.0, "element004"));System.out.println("zset集合中的所有元素:"+jedis.zrange("zset", 0, -1));//按照权重值排序System.out.println();System.out.println("=============删=============");System.out.println("zset中删除元素element002:"+jedis.zrem("zset", "element002"));System.out.println("zset集合中的所有元素:"+jedis.zrange("zset", 0, -1));System.out.println();System.out.println("=============改=============");System.out.println();System.out.println("=============查=============");System.out.println("统计zset集合中的元素中个数:"+jedis.zcard("zset"));System.out.println("统计zset集合中权重某个范围内(1.0——5.0),元素的个数:"+jedis.zcount("zset", 1.0, 5.0));System.out.println("查看zset集合中element004的权重:"+jedis.zscore("zset", "element004"));System.out.println("查看下标1到2范围内的元素值:"+jedis.zrange("zset", 1, 2));}@Testpublic  void HashOperate() {Jedis jedis = new Jedis("127.0.0.1", 6379);System.out.println("======================hash==========================");//清空数据System.out.println(jedis.flushDB());System.out.println("=============增=============");System.out.println("hashs中添加key001和value001键值对:"+jedis.hset("hashs", "key001", "value001"));System.out.println("hashs中添加key002和value002键值对:"+jedis.hset("hashs", "key002", "value002"));System.out.println("hashs中添加key003和value003键值对:"+jedis.hset("hashs", "key003", "value003"));System.out.println("新增key004和4的整型键值对:"+jedis.hincrBy("hashs", "key004", 4l));System.out.println("hashs中的所有值:"+jedis.hvals("hashs"));System.out.println();System.out.println("=============删=============");System.out.println("hashs中删除key002键值对:"+jedis.hdel("hashs", "key002"));System.out.println("hashs中的所有值:"+jedis.hvals("hashs"));System.out.println();System.out.println("=============改=============");System.out.println("key004整型键值的值增加100:"+jedis.hincrBy("hashs", "key004", 100l));System.out.println("hashs中的所有值:"+jedis.hvals("hashs"));System.out.println();System.out.println("=============查=============");System.out.println("判断key003是否存在:"+jedis.hexists("hashs", "key003"));System.out.println("获取key004对应的值:"+jedis.hget("hashs", "key004"));System.out.println("批量获取key001和key003对应的值:"+jedis.hmget("hashs", "key001", "key003"));System.out.println("获取hashs中所有的key:"+jedis.hkeys("hashs"));System.out.println("获取hashs中所有的value:"+jedis.hvals("hashs"));System.out.println();}
}

2、JedisPool的使用:

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;public class JedisPoolUtil {private static JedisPool jedisPool;static{JedisPoolConfig jedisPoolConfig=new JedisPoolConfig();jedisPoolConfig.setMaxIdle(100);jedisPoolConfig.setMaxTotal(1000);jedisPoolConfig.setMaxWaitMillis(2000);jedisPoolConfig.setMinIdle(10);jedisPool=new JedisPool(jedisPoolConfig,"127.0.0.1",6379);}public static Jedis  getJedis(){return  jedisPool.getResource();}
}

Redis java API ——Jedis的使用相关推荐

  1. redis java api 单例_Java API 操作Redis

    针对Redis的Java客户端有很多种,具体查看官网信息:https://redis.io/clients#java 本次测试使用Jedis API,Jedis使用方便,其api方法名称与redis命 ...

  2. jedis使用_Redis --Java客户端 Jedis

    Redis --Java客户端 Jedis 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 简介 Jedis: 一款java操作 ...

  3. Redis Java Client选型-Jedis Lettuce Redisson

    目录 1. 目标 2. 选型过程 2.1. 待选集合 2.2. 对比列表 2.3. 确定选型的考虑角度 1. 目标 针对redis java client,从多角度进行选型对比,以便选择符合业务要求的 ...

  4. centos部署Redis和Java开发(Jedis)

    centos部署Redis和Java开发(Jedis) 1.部署Redis 1)下载:http://redis.io/download    2)解压编译: $ tar xzf redis-3.2.3 ...

  5. redis java客户端配置,Java的Redis客户端选择-jedis与Lettuce

    Lettuce 和 Jedis 的定位都是Redis的client,所以他们当然可以直接连接redis server. Jedis在实现上是直接连接的redis server,如果在多线程环境下是非线 ...

  6. Java中Jedis连接Linux上的Redis出现connect time out(解决方案)

    Java中Jedis连接Linux上的Redis出现connect time out(解决方案) 参考文章: (1)Java中Jedis连接Linux上的Redis出现connect time out ...

  7. Redis的Java客户端——Jedis

    目录 一.基本配置 1.1 引入依赖 1.2  建立连接 1.3 测试String类型 1.4 释放资源 1.5 运行结果 二.Jedis连接池 一.基本配置 Jedis的官方地址:GitHub - ...

  8. Redis客户端之Jedis(Key、String、Set、List、pub/sub、cluster、pool、pipleline)

    原文链接:http://blog.csdn.net/xyang81/article/details/51918129 环境: OS:CentOS7 64位 server版本:Redis 3.2.0 c ...

  9. java api 设计_Java API设计实践

    使你的API在模块化和非模块化Java环境中都可用 在优锐课的java学习分享中,对微服务有了更深层次的新概念.关于API设计实践一点就通了. 介绍 了解设计Java API时应应用的一些API设计实 ...

最新文章

  1. php中new意思,php 在一个类中new自己代表什么意思 ?是构造函数
  2. input标签获取图片文件尺寸
  3. PREV-3_蓝桥杯_带分数
  4. Android内存泄漏
  5. prometheus-net.DotNetRuntime 获取 CLR 指标原理解析
  6. (转)RabbitMQ学习之路由(java)
  7. 新疆哈巴河冰雪旅游节开幕 游人沉醉雪舞冰封“第一桦”
  8. 达拉草201771010105《面向对象程序设计(java)》第十周学习总结
  9. 541.反转字符串||
  10. ubuntu20.x安装 podman
  11. 算法:判断是否是循环链表,并返回循环链表开始节点Linked List Cycle II
  12. Altera系列板子没有办法sudo,问题解决
  13. Jzoj 一维数组(包括排序)部分代码(共42题)
  14. 关于MOSFET驱动电阻的选择
  15. Android 根据逗号分隔String
  16. 随便聊聊,关于大学,未来的规划
  17. 动态网页怎样才能被搜索引擎收录
  18. 设置网页默认为360浏览器极速模式打开
  19. Windows 7系统盘清理
  20. 动态相关系数dcc_【分享吧】基于DCCMVGARCH模型的期货与股票市场收益率波动的动态相关分析...

热门文章

  1. 蓝桥杯 - 试题 J: 砍竹子(双向链表+堆/思维)
  2. CodeForces - 1480D2 Painting the Array II(dp)
  3. CodeForces - 1366E Two Arrays(组合数学+思维)
  4. CodeForces - 1066C Books Queries(思维)
  5. POJ - 3614 Sunscreen(贪心/二分图最大匹配-多重匹配/网络流-最大流)
  6. Burpsuite中protobuf数据流的解析 - Vincent
  7. cocos2d-x初探学习笔记(17)--瓦片地图集
  8. TCP/IP TIME_WAIT状态原理
  9. UDT协议实现分析——连接的建立
  10. 知乎热榜:如何获得高并发的经验?