简介

Jedis Client是Redis官网推荐的一个面向java客户端,库文件实现了对各类API进行封装调用。 Jedis源码工程地址:https://github.com/xetorthio/jedis 使用
Redis Client最好选用与服务端对应的版本,本例中使用Redis 3.2.9客户端使用jedis -2.9.0,Maven工程添加如下引用即可。
<dependency>
         <groupId>redis.clients</groupId>
         <artifactId>jedis</artifactId>
         <version>2.9.0</version>
         <type>jar</type>
         <scope>compile</scope>
</dependency>

注意事项

Redis Client拥有众多对接版本,本项目目前使用Jedis为官方推荐Java对接客户端,是基于其对Redis良好的版本支持和API对接,另外编码中尽量避免使用废弃接口。

Redis目前正在新版过渡期,3.0版本暂未稳定,但是由于3.0版本提供了最新的集群功能,可能在日后稳定版发布以后升级到3.0,目前使用的Jedis支持3.0的目前版本API。

Jedis基本使用


普通使用

Jedis jedis = new Jedis("localhost");
jedis.set("foo", "bar");
String value = jedis.get("foo");

Jedis池

JedisPool pool = new JedisPool(new JedisPoolConfig(), "localhost");
/// Jedis implements Closeable. Hence, the jedis instance will be auto-closed after the last statement.try (Jedis jedis = pool.getResource()) {  /// ... do stuff here ... for example
  jedis.set("foo", "bar");  
  String foobar = jedis.get("foo");
  jedis.zadd("sose", 0, "car"); 
  jedis.zadd("sose", 0, "bike"); 
  Set<String> sose = jedis.zrange("sose", 0, -1);
}/// ... when closing your application:pool.close();
JedisPoolConfig config = new JedisPoolConfig();
//最大连接数
config.setMaxTotal(10);
//最大空闲连接数
config.setMaxIdle(5);
//获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间,  默认-1
config.setMaxWaitMillis(1000);
//在获取连接的时候检查有效性, 默认false
config.setTestOnBorrow(true);
//在获取返回结果的时候检查有效性, 默认false
config.setTestOnReturn(true);
JedisPool pool = new JedisPool(config, "192.168.245.153",6379); try (Jedis jedis = pool.getResource()) {
  jedis.set("foo", "bar");
  String foobar = jedis.get("foo");
  jedis.zadd("sose", 0, "car"); jedis.zadd("sose", 0, "bike"); 
  Set<String> sose = jedis.zrange("sose", 0, -1);
}
pool.close();

Jedis常用操作


String的简单追加

Jedis jedis = new Jedis("192.168.245.153",6379);
jedis.append("foo", "bar");

Jedis存放List

jedis.lpush("s", "1","2","3","4");

Jedis操作Hash值

Jedis jedis = new Jedis("192.168.245.153",6379);
jedis.hset("hash", "key1", "v1");
jedis.hset("hash", "key2", "v2");
jedis.hset("hash", "key3", "v4");
//获取值
String hget = jedis.hget("hash", "key3");
System.out.println(hget);

Jedis操作Set值

jedis.sadd("set", "1","2","3");
//获取值
Set<String> smembers = jedis.smembers("set");
System.out.println(smembers.toString());

Jedis操作有序集合

Map<String,Double> scoreMembers = new HashMap<>();
scoreMembers.put("a", 1d);
scoreMembers.put("c", 3d);
scoreMembers.put("t", 2d);
jedis.zadd("st", scoreMembers);
//获取有序集合的成员数
Long zcard = jedis.zcard("st");
ScanResult<Tuple> zscan = jedis.zscan("st", ScanParams.SCAN_POINTER_START);
List<Tuple> result = zscan.getResult();
Iterator<Tuple> iterator = result.iterator();
while (iterator.hasNext()) {
Tuple next = iterator.next();
String element = next.getElement();
System.out.println(element);
}

Jedis存放(序列化)Bean对象

Jedis jedis = new Jedis("192.168.245.153",6379);

Person p1 = new Person();
p1.setAge("20");
p1.setName("joy");
p1.setId(1);
//存放序列化值
try {
ByteArrayOutputStream bout = new ByteArrayOutputStream();
ObjectOutputStream oout = new ObjectOutputStream(bout);
oout.writeObject(p1);
byte[] byteArray = bout.toByteArray();
jedis.set("person:1".getBytes(), byteArray);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} //反序列化
byte[] bs = jedis.get("person:1".getBytes());
ObjectInputStream oin;
try {
ByteArrayInputStream bin = new ByteArrayInputStream(bs);
oin = new ObjectInputStream(bin);
Person p = (Person)oin.readObject();
System.out.println(p.getName());
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}

Jedis存放对象(转化成Map)

Jedis jedis = new Jedis("192.168.245.153",6379);

		//存放p1对象
Person p1 = new Person();
p1.setAge("20");
p1.setName("joy");
p1.setId(1);
try {
Map<String, Object> bean2map = BeanUtils.bean2map(p1);
Map<String,String> map = new HashMap<>();
Set<Entry<String, Object>> entrySet = bean2map.entrySet();
Iterator<Entry<String, Object>> iterator = entrySet.iterator();
while(iterator.hasNext()) {
Entry<String, Object> next = iterator.next();
map.put(next.getKey(), String.valueOf(next.getValue()));
}
//存放map
jedis.hmset("person", map);
} catch (Exception e) {
e.printStackTrace();
}
String hget = jedis.hget("person", "name");
System.out.println(hget);

Jedis排序

简单排序

//降序
jedis.lpush("s", "1","2","3","4");
List<String> sort = jedis.sort("s",new SortingParams().desc());
System.out.println(sort); //升序
jedis.lpush("s", "1","2","3","4");
List<String> sort = jedis.sort("s",new SortingParams().asc());
System.out.println(sort);

查看原文:http://www.coder306.cn/?p=196

Jedis操作Redis实例的更多相关文章

  1. Java中使用Jedis操作Redis(转载)

    整理 1.字符串 添加:set keyname value 查询:get keyname 拼接:append keyname value 删除:del keyname 添加多个: mset keyna ...

  2. jedis操作redis全指南

    package com.wujintao.redis; import java.util.Date; import java.util.HashMap; import java.util.Iterat ...

  3. Jedis操作Redis技巧详解

    对于Redis的部署模式有两种,单机模式 和 集群模式.因此,本文的介绍也从这两个方面进行介绍.众所周知,Jedis是最著名的Redis java客户端操作类库,几乎支持所有的Redis操作.本文就是 ...

  4. Redis入门和Java利用jedis操作redis

    Redis入门和Java利用jedis操作redis Redis介绍 Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库. Redis 与其他 key - val ...

  5. Jedis操作Redis数据库

    添加Maven依赖: <dependencies> <!-- 单元测试 --> <dependency> <groupId>junit</grou ...

  6. Jedis操作Redis

    Jedis操作Redis的常用封装方法 @Resource(name="jedispool") private JedisPool pool=null; /** * 设置缓存对象过 ...

  7. 四、Jedis操作Redis

    前言:  原来我们操作mysql需要用的jdbc,现在操作redis则需要jedis,jedis是客户端,而redis是服务器,使用jedis客户端来操作redis. 在这里要使用jedis操作red ...

  8. JAVA中通过Jedis操作Redis连接与插入简单库

    一.简述 JAVA中通过Jedis操作Redis连接与插入简单库 二.依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis ...

  9. jedis操作redis的几种常见方式总结

    Redis是一个著名的key-value存储系统,也是nosql中的最常见的一种,这篇文章主要给大家总结了关于在java中jedis操作redis的几种常见方式,文中给出了详细的示例代码供大家参考学习 ...

随机推荐

  1. VS中自定义代码片段

    VS - 工具 - 代码片段管理器 实现:propnotify 加 Tab 键 生成属性定义代码片段 (包含一个字段定义,一个属性get/set定义,其中set会触发属性值变更事件) <?xml ...

  2. 前端基础进阶(十一):详细图解jQuery对象,以及如何扩展jQuery插件

    早几年学习前端,大家都非常热衷于研究jQuery源码.我还记得当初从jQuery源码中学到一星半点应用技巧的时候常会有一种发自内心的惊叹,“原来JavaScript居然可以这样用!” 虽然随着前端的发 ...

  3. Java的字节流,字符流和缓冲流对比探究

    目录 一.前言 二.字节操作和字符操作 三.两种方式的效率测试 3.1 测试代码 3.2 测试结果 3.3 结果分析 四.字节顺序endian 五.综合对比 六.总结 一.前言 所谓IO,也就是Inp ...

  4. Java IO(十四) CharArrayReader 和 CharArrayWriter

    Java IO(十四) CharArrayReader 和 CharArrayWriter 一.介绍 CharArrayReader 和 CharArrayWriter 是字符数组输入流和字符数组输出 ...

  5. ASP.NET Core Blazor Webassembly 之 数据绑定

    上一次我们学习了Blazor组件相关的知识(Asp.net Core Blazor Webassembly - 组件).这次继续学习Blazor的数据绑定相关的知识.当代前端框架都离不开数据绑定技术. ...

  6. Spring boot Sample 007之spring-boot-log4j2

    一.环境 1.1.Idea 2020.1 1.2.JDK 1.8 二.目的 spring boot 整合多环境log4j2 三.步骤 3.1.点击File -> New Project -> ...

  7. Rocket - devices - PLIC

    https://mp.weixin.qq.com/s/FR3yeLLBqy0n-fflw-ATgg 简单介绍TLPLIC的实现. 1. GatewayPLICIO PLIC是Platform-Leve ...

  8. Rocket - devices - CLINT

    https://mp.weixin.qq.com/s/4LfZZDKCTQhiKIUjvbDKEg 简单介绍CLINT的实现. 1. 概述 CLINT即是Core Local Interrupter的 ...

  9. 【JSP】el、jstl、MVC、三层架构

    JSP[Java Server Pages] [概念] java服务器页面 简化的servlet设计 html语法中扩展java 跨平台 JSP全名为Java Server Pages,中文名叫jav ...

  10. 使用dotnet Cli向nuget发布包

    长话短说, 今天分享如何在nuget.org创建并发布.NET Standard package. 前置 安装勾选.NET Core开发套件的Visual Studio; 安装dotnet Cli 从 ...