jedis

redis pub/sub 使用redis完成发布订阅

被刻印的时光 ゝ 提交于 2019-12-05 09:28:35
一、需要3.0以上版本的redis 二、redis-cli实现发布订阅 先开启一个redis-cli(S1),并监听着china这个channel subcribe china 此时A1处于监听状态 然后再开启一个redis-cli(P1),并向china这个channel发布helloWorld消息 publish china helloWorld 这是我们会发现A1监听到了这个helloWorld消息 同样,我们开启多个监听窗口,这时我们会发现,他们都可以收到这个helloWorld消息,这和MQ中间件中的发布订阅相同,只有在发布的时刻监听的监听者可以消费到这条消息。 三、Jedis实现发布订阅 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.0</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> Jedis中的JedisPubSub抽象类提供了订阅和取消的功能。想处理订阅和取消订阅某些channel的相关事件

Redis 客户端Jedis使用(一)

房东的猫 提交于 2019-12-05 08:54:14
Jedis 是Redis 的Java客户端,通过一段时间的使用,jedis基本实现redis的所有功能,并且jedis在客户端实现redis数据分片功能,Redis本身是没有数据分布功能。 一、下载jedis 代码 jedis 代码地址: https://github.com/xetorthio/jedis 再次感受到开源的强大。呵呵,大家有时间可以看看源码。 二、项目中如何使用Jedis使用 现在大家都喜欢用maven作为项目管理利器,那我只说明一下Maven如何使用jedis,只需要添加以下依赖就可以。 < dependency > < groupId > redis.clients </ groupId > < artifactId > jedis </ artifactId > < version > 2.1.0 </ version > </ dependency > */ /*--> */ OK, 用maven管理jar包依赖真的很方便。建议大家都采用maven管理项目。 三、建立一个简单的连接 public class JedisUtil { public static Jedis createJedis() { Jedis jedis = new Jedis( "127.0.0.1" ); return jedis; } public static Jedis

【Redis】- 客户端 Jedis

纵然是瞬间 提交于 2019-12-05 08:53:52
Redis 常用客户端: Redission、Jedis jedis 简介 redis的Java客户端,可访问、操作Redis Jedis工具类: package com.zhiwei.redis_jedis; import java.util.ResourceBundle; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; /** * Redis的基础工具类 * @author Yang Zhiwei * */ public final class RedisUtil { private static JedisPool jedisPool = null; //初始化JedisPool连接池 static { try { //从classpath路径下获取redis.perpoties文件,获取jedis连接池参数(后缀名可以省略) ResourceBundle rb=ResourceBundle.getBundle("com/zhiwei/redis_jedis/redis"); int maxActive=Integer.parseInt(rb.getString("redis.pool

Redis应用学习(三)——Jedis客户端的简单使用介绍

半腔热情 提交于 2019-12-05 08:53:03
1. Redis的Java客户端程序——Jedis 1. 在Redis的安装目录中redis-cli是一个Redis的Shell语言写的客户端,通过运行该客户端就可以实现一系列Redis操作,而如果要使用Java语言的Redis客户端,就必须要使用Jedis相关的包。首先导入Jedis相关的包,建议使用maven导入依赖包 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> 使用实例代码如下 /** * @ClassName:TestJedis * @Description:直连Redis */ public class TestJedis { public static void main(String[] args) { //直接创建一个Jedis对象,并连接(TCP连接)到Redis服务器,构造参数分别是IP地址和端口号 Jedis jedis=new Jedis("192.168.10.128", 6379); //执行一个set操作 jedis.set("key", "value"); //执行一个get操作,返回获取的字符串 String value=jedis.get("key");

linux常用环境的安装

你说的曾经没有我的故事 提交于 2019-12-05 03:05:28
安装linux和安装虚拟机略过,直接进行环境的安装 1,安装JDK java环境变量: 系统变量: /etc/profile 用户环境变量: .bash_profile(当前用户的profile) 将文件上传到root文件夹下 tar -zxvf jdk-8u171-linux-x64.tar.gz(解压) 此次用的是解压包的方式进行配置, 还可以通过rpm(类似于java的.exe文件),还是需要配置,通过搜索安装文件在10中可以看到,在环境变量中配置 yum安装,自动化配置,什么都不用做,只需要执行命令,直接用 mv jdk1.8.0_171/ /usr(移动到usr文件夹下) vim .bash_profile(配置环境变量) source .bash_profile(刷新配置) 1 export JAVA_HOME=/usr/jdk1.8.0_171 2 export PATH=$JAVA_HOME/bin:$PATH 点击查看java环境配置 然后用java或者javac测试一下配置是否成功 查询一下java安装的位置,以方便后期进行卸载软件 1 [root@localhost ~]# find / -name "java" 2 /etc/pki/ca-trust/extracted/java 3 /etc/pki/java 4 /usr/jdk1.8.0_171/bin

Spring Data Redis 小demo

南笙酒味 提交于 2019-12-05 03:02:50
一、简介 Spring-data-redis 是 spring 大家族的一部分,提供了在 srping 应用中通过简单的配置访问 redis 服务, 对 reids 底层开发包 (Jedis, JRedis, and RJC) 进行了高度封装, RedisTemplate 提供了 redis 各种操作、异常处理及序列化,支持发布订阅,并对 spring 3.1 cache 进行了实现。 spring-data-redis 针对 jedis 提供了如下功能: 1. 连接池自动管理,提供了一个高度封装的 “RedisTemplate” 类 2. 针对 jedis 客户端中大量 api 进行了归类封装 , 将同一类型操作封装为 operation 接口 ValueOperations :简单 K-V 操作 SetOperations : set 类型数据操作 ZSetOperations : zset 类型数据操作 HashOperations :针对 map 类型的数据操作 ListOperations :针对 list 类型的数据操作 二、添加依赖 <!-- 缓存 --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.1</version> <

Why A single Jedis instance is not threadsafe?

无人久伴 提交于 2019-12-05 03:02:16
问题 https://github.com/xetorthio/jedis/wiki/Getting-started using Jedis in a multithreaded environment You shouldn't use the same instance from different threads because you'll have strange errors. And sometimes creating lots of Jedis instances is not good enough because it means lots of sockets and connections, which leads to strange errors as well. A single Jedis instance is not threadsafe ! To avoid these problems, you should use JedisPool, which is a threadsafe pool of network connections.

SpringDataRedis简单入门介绍

£可爱£侵袭症+ 提交于 2019-12-05 02:55:16
1:问题引入 在实际开发中,开发的每一个项目,每天都有大量的人访问,对数据库造成很大的访问压力,甚至是瘫痪。那如何解决呢?我们通常的做法有两种:一种是数据缓存、一种是网页静态化。我们今天讨论第一种解决方案。 2:什么是SpringDataRedis    SpringDataRedis是Spring大家族中的一个成员,提供了在srping应用中通过简单的配置访问redis服务,对reids底层开发包(Jedis, JRedis, and RJC)进行了高度封装,RedisTemplate提供了redis各种操作、异常处理及序列化,支持发布订阅,并对spring 3.1 cache进行了实现。 3: Redis redis 是一款开源的 Key-Value 数据库 ,运行在内存中,由 ANSI C 编写 。企业开发通常采用Redis 来实现缓存。同类的产品还有 Memcache 、 MongoDB 等。 4:Jedis Jedis 是 Redis 官方推出的一款面向 Java 的客户端,提供了很多接口供 Java 语言调用。可以在 Redis 官网下载,当然还有一些开源爱好者提供的客户端,如 Jredis 、 SRP 等等,推荐使用 Jedis 。 5:spring-data-redis针对jedis提供了如下功能   连接池自动管理,提供了一个高度封装的“RedisTemplate

分布式锁的由来、特点、及Redis分布式锁的实现详解

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-05 02:28:27
什么是分布式锁 要介绍分布式锁,首先要提到与分布式锁相对应的是线程锁、进程锁。 1.线程锁 主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,比如Synchronized、Lock等。 2.进程锁 为了控制同一操作系统中多个进程访问某个共享资源,因为进程具有独立性,各个进程无法访问其他进程的资源,因此无法通过synchronized等线程锁实现进程锁。 3.分布式锁 当多个进程不在同一个系统中,用分布式锁控制多个进程对资源的访问。 分布式锁的由来 在传统单机部署的情况下,可以使用Java并发处理相关的API(如ReentrantLcok或synchronized)进行互斥控制。 但是在分布式系统后,由于分布式系统多线程、多进程并且分布在不同机器上,这将使原单机并发控制锁策略失效,为了解决这个问题就需要一种跨JVM的互斥机制来控制共享资源的访问,这就是分布式锁的由来。 当多个进程不在同一个系统中,就需要用分布式锁控制多个进程对资源的访问。 分布式锁的特点 首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件: 1、 互斥性 :任意时刻,只能有一个客户端获取锁,不能同时有两个客户端获取到锁。 2、 安全性 :锁只能被持有该锁的客户端删除

Redis分布式锁的实现方式

烂漫一生 提交于 2019-12-05 02:23:47
前言 分布式锁一般有3中实现方式: 数据库乐观锁; 基于Redis的分布式锁; 基于ZooKeeper的分布式锁。 以下将详细介绍如何正确地实现Redis分布式锁。 可靠性 首先,为了确保分布式锁的可用,我们至少要确保锁的实现的同时,要满足以下四个条件: 互斥性。 在任意时刻,只有一个客户端持有锁。 不会发生死锁。 即使一个客户端在持有锁的期间发生崩溃而没有主动释放锁,也能保证后续其他客户端能加锁。 具有容错性。 只要大部分的 Redis 节点正常运行,客户端就可以加锁和解锁。 解铃还须系铃人。 加锁和解锁必须是同一个客户端,客户端自己不能把别人加的锁给解了。 代码实现  组件依赖   首先我们通过 Maven 引入 Jedis 开源组件,在 pom.xml 文件加入以下代码: 1 <dependency> 2 <groupId>redis.clientsgroupId</groupId> 3 <artifactId>jedisartifactId</artifactId> 4 <version>2.9.0version</version> 5 </dependency>  加锁代码   先放代码,后面再解释为什么这样实现: 1 public class RedisTool { 2 3 private static final String LOCK_SUCCESS = "OK";