jedis

崛起于Springboot2.X + Redis单机(15)

こ雲淡風輕ζ 提交于 2019-11-29 08:26:56
《SpringBoot2.X心法总纲》 1、pom添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>com.google.collections</groupId> <artifactId>google-collections</artifactId> <version>1.0</version> </dependency> 这四个依赖的作用,第一个是集成redis,第二个集成jedis,第三个和第四个是封装jedis工具类的实现

崛起于Springboot2.X + 哨兵模式Redi(16)

徘徊边缘 提交于 2019-11-29 08:26:45
《SpringBoot2.X心法总纲》 介绍:springboot的哨兵模式如果只是使用redis的情况下,在 单机redis 的前提下,直接在配置文件添加几行配置就可以了,因为springboot有自动配置加载的功能就可以了 1、单机的redis中的配置文件redis注释 #spring.redis.database=0 #spring.redis.host=localhost #spring.redis.port=6379 #spring.redis.password= #spring.redis.timeout=10000ms 注释掉之后,改为: #redis哨兵模式 spring.redis.sentinel.master=mymaster spring.redis.sentinel.nodes=192.168.1.20:26379,192.168.1.20:36379,192.168.1.20:46379 添加配置类 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.annotation

SpringBoot 2.x版本以上整合redis方式

心已入冬 提交于 2019-11-29 08:11:26
1.引入pom文件 2.编辑配置文件 上面红方框中的属性没有特殊情况就都加上,下面的xx.jedis.pool.xx4个属性可以不用填写,有默认,在RedisProperties类中有 3.直接在项目中进行注入使用,不用写配置类 在SpringBoot2.0之后,spring容器是自动的生成了StringRedisTemplate和RedisTemplate<Object,Object>,可以直接注入 但是在实际使用中,我们大多不会直接使用RedisTemplate<Object,Object>,而是会对key,value进行序列化,所以我们还需要新增一个配置类 4.新增配置类生成自定义序列化的RedisTemplate 这样就可以使用我们新生成的RedisTemplate了。其实在源码RedisAutoConfiguration中已经有了此生成RedisTemplate的方法,只不过是对方法进行了改造一下,生成了一个自定义的RedisTemplate。 5.在需要使用的类中注入并存储 6.使用Redis Desktop Manager进行结果展示 来源: https://my.oschina.net/u/4195257/blog/3103971

Redis入门

不打扰是莪最后的温柔 提交于 2019-11-29 08:01:56
官网下不了,这里找了这个地址,版本比较老 下载驱动,搜索jedis 参考 基本操作 public class RedisTest { public static void main(String[] args) { /** * 地址 端口 超时时间 */ Jedis jedis = new Jedis("localhost", 6379, 100000); /** * 测试是否通 */ System.out.println("服务正在运行: "+jedis.ping()); /** * set:设置key值 * get:获取key值 * del:删除key * append:追加key值 * incr:key值自增1 * incrBy:key值自增,指定步长 * decr:key值自减1 * decrBy:key值自减,指定步长 * expire:为key设置过期时间(秒数) * setex:设置key值,可指定存活时间(秒数) * setnx:设置key值。key不存在才会设置,如果key存在则回滚操作,结果返回0,表示没有设置成功 * ttl:time to live,获取key的存活时间(秒),-1表示永不过期 * persist:去掉key的expire设置,不再有失效时间 */ jedis.set("first", "Hello World!"); System.out

Jedis returnResource使用注意事项

ⅰ亾dé卋堺 提交于 2019-11-29 07:18:45
在线上环境发现了一个工作线程异常终止,看日志先是一些 SocketTimeoutException,然后突然有一个ClassCastException redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out ... java.lang.ClassCastException: [B cannot be cast to java.lang.Long at redis.clients.jedis.Connection.getIntegerReply(Connection.java:208) at redis.clients.jedis.Jedis.sismember(Jedis.java:1307) 经过在本地人工模拟网络异常的情境,最终复现了线上的这一异常。又经过深入分析(提出假设-->验证假设),最终找出了导致这一问题的原因。见如下示例代码: JedisPool pool = ...; Jedis jedis = pool.getResource(); String value = jedis.get("foo"); System.out.println("Make SocketTimeoutException"); System

Redis-习-01-Redis分布式锁(单节点Lua脚本)

牧云@^-^@ 提交于 2019-11-29 05:45:18
文章目录 Redis-习-01-Redis分布式锁(Lua脚本) 获取锁释放锁代码 测试 代码 测试过程 Redis-习-01-Redis分布式锁(Lua脚本) SpringBoot 项目中,采用 set key value nx px 命令确保获取锁的原子性操作,使用 Lua 脚本确保释放锁的原子性操作。(仅限单节点Redis) 获取锁释放锁代码 private static final Long RELEASE_SUCCESS = 1L; private static final String LOCK_SUCCESS = "OK"; private static final String SET_IF_NOT_EXIST = "NX"; private static final String SET_WITH_EXPIRE_TIME = "EX"; private static final String RELEASE_LOCK_SCRIPT = "if redis.call('get', KEYS[1]) == ARGV[1] then return redis.call('del', KEYS[1]) else return 0 end"; @SuppressWarnings("rawtypes") @Autowired private RedisTemplate

CentOs中Redis数据库的安装与Redis常用数据类型操作

别说谁变了你拦得住时间么 提交于 2019-11-29 04:07:25
redis 是一个开源的、使用 C 语言编写的、支持网络交互的、可基于内存也可持久 化的 Key-Value 数据库。redis 数据结构:redis 是一种高级的 key:value 存储系统,其中 value 支持五种数据类型:   1.字符串(strings)   2.字符串列表(lists)   3.字符串集合(sets)   4.有序字符串集合(sorted sets)   5.哈希(hashes) Redis 适用场景:   1.缓存——热数据:热点数据(经常会被查询,但是不经常被修改或者删除的数据), 首选是使用 redis 缓存。   2.计数器:诸如统计点击数等应用。由于单线程,可以避免并发问题,保证不会出错,而且 100%毫秒级性能!    3.排行榜:谁得分高谁排名往上。命令:ZADD(有续集,sorted set)   4.最新列表:例如新闻列表最新页面,总数量很大的情况下,尝试 redis 的 LPUSH 命令构建 List,一个个顺序都塞进去就可以   5.分布式锁与单线程机制:秒杀系统,基于 redis 是单线程特征,防止出现数据库 “爆破”   6.位操作(大数据处理):用于数据量上亿的场景下,例如几亿用户系统的签到, 去重登录次数统计,某用户是否在线等等。   7.队列:由于 redis 把数据添加到队列是返回添加元素在队列的第几位,所以可以做判

redis入门demo

谁都会走 提交于 2019-11-29 02:25:53
redis是什么? REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。 Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 为什么使用redis? ● 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。 ● 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 ● 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。 ● 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。 redis使用步骤 准备工作,在本机上安装redis服务器。这里使用Redis-x64-3.2.100 .msi版本,百度云盘地址: 链接: https://pan.baidu.com/s/1BoppoI2VCX-A5jSWyKeWlQ 密码:qqn2 第一步:启动本地的Redis服务;   第二步

java web项目配置Redis

耗尽温柔 提交于 2019-11-29 02:25:28
java web项目配置Redis Redis介绍    REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。 Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。 安装redis 环境准备:win 7环境、reids3.0 步骤1: 下载redis解压到任意盘符,结果如下: 步骤2: 点击redis-server.exe启动redis服务; 步骤3: 选择redis-cli.exe启动redis客户端,进行测试。输入set mykey redis 回车,输入 get mykey 回车,输出:“redis”。安装完成. 项目配置reids spring项目下,需要导入commons

Redis两种秒杀抢购思路

风格不统一 提交于 2019-11-29 00:52:54
方式一:使用DECR减库存 /** * 外卡进入减库存 * @param competitionQuarterInDTO * @return */@Overridepublic int otherCardEnter(CompetitionQuarterInDTO competitionQuarterInDTO) throws IOL8ServiceException, IOL8CommonException { if(NumberUtils.isNumberNull(competitionQuarterInDTO.getCompetitionQuarter()) || StringUtils.isBlank(competitionQuarterInDTO.getTranslatorId())){ throw IOL8ServiceExceptionBuilder.exceptionBuilder().createException(ErrorCode.ERROR_CODE_240002); } Jedis jedis = null; try{ JedisPool pool = JedisUtils.getJedisPool(); jedis = pool.getResource(); Integer num = getPassStock(jedis,