jedis

在RedisTemplate中使用scan代替keys指令

馋奶兔 提交于 2019-11-28 23:58:02
keys * 这个命令千万别在生产环境乱用。特别是数据庞大的情况下。因为Keys会引发Redis锁,并且增加Redis的CPU占用。很多公司的运维都是禁止了这个命令的 当需要扫描key,匹配出自己需要的key时,可以使用 scan 命令 scan 操作的Helper实现 import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.function.Consumer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.core.Cursor; import org.springframework.data.redis.core.ScanOptions; import org.springframework.data.redis.core.StringRedisTemplate; import

单机版Redis下的Jedis

為{幸葍}努か 提交于 2019-11-28 21:44:57
jedis是Redis客户端工具jar 使用非集群版本示例代码: pom.xml: < project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi : schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > < modelVersion > 4.0 .0 < / modelVersion > < groupId > com . bl < / groupId > < artifactId > jedis < / artifactId > < version > 0.0 .1 - SNAPSHOT < / version > < dependencies > < dependency > < groupId > redis . clients < / groupId > < artifactId > jedis < / artifactId > < version > 2.8 .1 < / version > < / dependency > < dependency > <

集群版Redis下的Jedis

ε祈祈猫儿з 提交于 2019-11-28 21:43:05
package com . bl . test ; import java . util . HashSet ; import java . util . Set ; import org . junit . Test ; import redis . clients . jedis . HostAndPort ; import redis . clients . jedis . JedisCluster ; public class Demo2 { @Test public void test ( ) { Set < HostAndPort > set = new HashSet < > ( ) ; set . add ( new HostAndPort ( "192.168.213.148" , 7001 ) ) ; set . add ( new HostAndPort ( "192.168.213.148" , 7002 ) ) ; set . add ( new HostAndPort ( "192.168.213.148" , 7003 ) ) ; set . add ( new HostAndPort ( "192.168.213.148" , 7004 ) ) ; set . add ( new HostAndPort ( "192.168.213.148" ,

Redis数据库连接,使用jedis

时光毁灭记忆、已成空白 提交于 2019-11-28 19:29:17
Redis数据库连接,使用jedis 前言: redis介绍,redis是开源免费的,遵守BSD协议,是一个高性能的key-value数据库 Redis 与其他key-value缓存产品有以下三个特点 redis支持数据的持久化,持久化的意思是可以将内存中的数据保存在磁盘中,重启可以再次使用。 Redis 不仅仅支持key- value类型的数据, 同时还提供了list,set zset,hash等数据存储结构 Redis 支持数据备份。Master-slave模式的数据备份 Redis的优势 性能比较高。Redis能读的数据是11万次每秒、写的速度是8万次每秒 数据类型支持,string,lists hashes sets 以及ordered sets数据类型操作 原子性,redis 所有操作都是原子性,与事务的原子性相同,要么成功,要么失败 安装 准备vm虚拟机。本地运行测试。 安装系统 centor 7 下载redis启动 下载 下载地址 : http://redis.io/download 选择最新稳定的下载。由于不能上图自己找下载量最多的即可 运行虚拟机登录,运行管理员sudo命令,如果你是子用户,为了打字方便,我默认为root用户 Wget http://download.redis.io/releases/redis-2.8.17 这个是你下载的版本.tar.gz

使用redis生成订单号

和自甴很熟 提交于 2019-11-28 15:29:56
package com.shopping.app.util; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import redis.clients.jedis.*; import java.util.List; import java.util.Map; import java.util.Set; import redis.clients.jedis.BinaryClient.LIST_POSITION; import redis.clients.util.SafeEncoder; @Service public class RedisManager { @Autowired @Qualifier("jedisPool") JedisPool jedisPool; private Logger log = Logger.getLogger(this.getClass()); /** 操作Key的方法 */ public

分布式锁实现

廉价感情. 提交于 2019-11-28 15:03:18
在微服务开发中常用的分布式有redis,zookeeper实现,下面就基于这两种分布式锁实现做一个总结: 1,zookeeper的分布式锁实现 基于ZooKeeper分布式锁的流程 在zookeeper指定节点(locks)下创建临时顺序节点node_n 获取locks下所有子节点children 对子节点按节点自增序号从小到大排序 判断本节点是不是第一个子节点,若是,则获取锁;若不是,则监听比该节点小的那个节点的删除事件 若监听事件生效,则回到第二步重新进行判断,直到获取到锁 具体实现 下面就具体使用java和zookeeper实现分布式锁,操作zookeeper使用的是apache提供的zookeeper的包。 通过实现Watch接口,实现process(WatchedEvent event)方法来实施监控,使CountDownLatch来完成监控, 在等待锁的时候使用CountDownLatch来计数,等到后进行countDown,停止等待,继续运行。 以下整体流程基本与上述描述流程一致,只是在监听的时候使用的是CountDownLatch来监听前一个节点。 (1) pom.xml <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3

【Redis】Redis 主从模式搭建

主宰稳场 提交于 2019-11-28 14:10:33
Redis Sentinel介绍   Redis Sentinel是Redis的官方高可用性解决方案   Redis Sentinel为Redis提供高可用性。实际上,这意味着使用Sentinel可以创建一个Redis部署,可以在没有人为干预的情况下抵御某些类型的故障。   Redis Sentinel还提供其他附属任务,如监控,通知,并充当客户端的配置提供程序。   这是宏观级别的Sentinel功能的完整列表(即 大图 ): 监控 。 Sentinel会不断检查主实例和从属实例是否按预期工作。 通知 。 Sentinel可以通过API通知系统管理员,另一台计算机程序,其中一个受监控的Redis实例出现问题。 自动故障转移 。 如果主服务器未按预期工作,Sentinel可以启动故障转移过程,其中从服务器升级为主服务器,其他其他服务器重新配置为使用新主服务器,并且使用Redis服务器的应用程序通知有关新服务器的地址。连接。 配置提供商 。 Sentinel充当客户端服务发现的权限来源:客户端连接到Sentinels,以便询问负责给定服务的当前Redis主服务器的地址。 如果发生故障转移,Sentinels将报告新地址 Redis Sentinel搭建   本例在同一台机器上搭建,实际搭建,可以分三台机器进行搭建    服务类型 角色 IP地址 端口 Redis master 127

redis 学习笔记(4)-HA高可用方案Sentinel配置

自作多情 提交于 2019-11-28 13:14:09
转载自:http://www.cnblogs.com/yjmyzz/p/redis-sentinel-sample.html 上一节中介绍了master-slave模式 , 在最小配置:master、slave各一个节点的情况下,不管是master还是slave down掉一个,“完整的”读/写功能都将受影响,这在生产环境中显然不能接受。幸好redis提供了sentinel(哨兵)机制,通过 sentinel模式启动redis后,自动监控master/slave的运行状态,基本原理是:心跳机制+投票裁决 每个sentinel会向其它sentinal、master、slave定时发送消息,以确认对方是否“活”着,如果发现对方在指定时间(可配置)内未回应,则暂时认为对方已挂(所谓的“主观认为宕机” Subjective Down,简称SDOWN)。 若“哨兵群”中的多数sentinel,都报告某一master没响应,系统才认为该master"彻底死亡"(即:客观上的真正down 机,Objective Down,简称ODOWN),通过一定的vote算法,从剩下的slave节点中,选一台提升为master,然后自动修改相关配置。 最小化的sentinel配置文件 为: port 7031 dir /opt/app/redis/redis-2.8.17/tmp sentinel

Redis_简单的redis 缓存

戏子无情 提交于 2019-11-28 12:34:37
在pom.xml加入以下内容: //高速序列化 存储对象 速度是java 实现io 序列化的10倍左右 存储较大的对象时 内置缓存 <dependency> <groupId>com.dyuproject.protostuff</groupId> <artifactId>protostuff-core</artifactId> <version>1.0.8</version> </dependency> //redis 客户端 jedis 也可以使用别的 推荐 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.7.3</version> </dependency> <dependency> <groupId>com.dyuproject.protostuff</groupId> <artifactId>protostuff-runtime</artifactId> <version>1.0.8</version> //业务层获取jedis 连接池 public RedisDao(String ip,int port) { // TODO Auto-generated constructor stub jedisPool= new JedisPool(ip

redis实战

时光总嘲笑我的痴心妄想 提交于 2019-11-28 12:34:07
springboot整合jedis访问Redis jedis是类似于jdbc数据库连接的Redis客户端 POM.xml <!-- jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.2</version> </dependency> application.yml spring: redis: database: 0 host: 127.0.0.1 port: 6379 CacheServiceImpl @Service public class CacheServiceImpl implements CacheService { @Value("${spring.redis.host}") private String redisHost; @Value("${spring.redis.port}") private int redisPort; @Override public void setCache(String key, String value) { Jedis jedis = new Jedis(redisHost,redisPort); jedis.set(key,value); jedis.close(); }