jedis 基本使用

2024-08-27 16:18
文章标签 使用 基本 jedis

本文主要是介绍jedis 基本使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境

java:1.7
jedis: 2.9

基本使用

先去中央仓库把jedisjar包下载下来。

在多线程环境中使用jedis

你不应该在多线程中使用同一个jedis实例,因为你将会遇到奇怪的问题。
然后有时创建大量的jedis实例也是不对的,因为其意味着大量的socket连接,其也会导致产生奇怪的问题。单个jedis实例是非线程安全的。为了避免这些问题,你应该使用JedisPool,其是线程安全的网络连接池。你可以使用这个池去创建几个可靠的jedis实例,当使用完成后归还到池子中。

可以使用下列代码,初始化一个池子:

JedisPool pool = new JedisPool(new JedisPoolConfig(), "localhost");

你可以将该池静态存储在某个地方,因为它是线程安全的。

JedisPoolConfig 包含许多Redis-specific连接池有用的默认值。JedisPool是基于Commons Pool 2,你可以参考:
http://commons.apache.org/proper/commons-pool/apidocs/org/apache/commons/pool2/impl/GenericObjectPoolConfig.html 来查看Commons Pool的配置。

使用方法:

/// Jedis implements Closeable. Hence, the jedis instance will be auto-closed after the last statement.
try (Jedis jedis = pool.getResource()) {/// ... do stuff here ... for examplejedis.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.destroy();

注意

上面用到了jdk1.7中的新语法:try with resource
这样的好处就是在括号里面的流或者资源,会自动关闭,不需要像下面例子那样在finally里面关闭。
要使用这个特性需要实现Closeable接口

如果你不能使用try-with-resource,你可以使用Jedis.close()

Jedis jedis = null;
try {jedis = pool.getResource();/// ... do stuff here ... for examplejedis.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);
} finally {if (jedis != null) {jedis.close();}
}
/// ... when closing your application:
pool.destroy();

如果jedis是来自于池子里的,只要确定发生了JedisConnectionException就会由合适的方法将其归还到池子中。如果jedis并不是来自于池子中,(发送JedisConnectionException)它将会被断开连接并关闭。

设置主从分配

启用副本

redis主要用于主从的配置。这意味着写请求必须明确发送到主节点,并将更改拷贝到从节点(也是redis服务器)。读请求可以发送到从节点,这样就减少了主节点的压力。

上面的示例使用的就是master,为了启用副本,这里有两种方式来告诉从节点其归属哪个主节点。

  1. redis服务器的配置文件中的相应部分指定
  2. 在给定的jedis实例上,调用savleOf方法并传递IPport两个参数。
jedis.slaveOf("localhost", 6379);  //  if the master is on the same PC which runs your code
jedis.slaveOf("192.168.1.35", 6379); 

注意

redis2.6版本开始,子节点默认是只读的,所以写请求将会导致错误。

如果你更改了该设置,那么这些从节点就会像正常的redis服务器一样,并且可以接收写请求,而不会发生错误。但是这些更改不会复制,如果你混合你的jedis实例,那么这些更改将会有被覆盖的风险。

disable replication / upon failing master, promote a slave

如果你的主节点坏了,你可能想把某个从节点提升为新的主节点。
你应该首先(尝试)禁止离线主节点复制,接着,如果你有多个从服务器,可以从剩余的从服务器中选一个作为新节点。

slave1jedis.slaveofNoOne();
slave2jedis.slaveof("192.168.1.36", 6379); 

参考地址:

https://github.com/xetorthio/jedis/wiki/Getting-started

这篇关于jedis 基本使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1112164

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他