jedis

从源码研究如何不重启Springboot项目实现redis配置动态切换

断了今生、忘了曾经 提交于 2020-08-13 09:59:49
上一篇Websocket的续篇暂时还没有动手写,这篇算是插播吧。今天讲讲不重启项目动态切换redis服务。 背景 多个项目或微服务场景下,各个项目都需要配置redis数据源。但是,每当运维搞事时(修改redis服务地址或端口),各个项目都需要进行重启才能连接上最新的redis配置。服务一多,修改各个项目配置然后重启项目就非常蛋疼。所以我们想要找到一个可行的解决方案,能够不重启项目的情况下,修改配置,动态切换redis服务。 如何实现切换redis连接 刚遇到这个问题的时候,想必如果对spring-boot-starter-data-redis不是很熟悉的人,首先想到的就是去百度一下(安慰下自己:不要重复造轮子嘛)。 可是一阵百度之后,你找到的结果可能都是这样的: public ValueOperations updateRedisConfig() { JedisConnectionFactory jedisConnectionFactory = (JedisConnectionFactory) stringRedisTemplate.getConnectionFactory(); jedisConnectionFactory.setDatabase(db); stringRedisTemplate.setConnectionFactory

Redis 有序集合简单测试

拥有回忆 提交于 2020-08-12 20:52:02
Redis 有序集合底层是一个复合数据结构,是由一个双hashmap构成的字典和跳表实现的,来保证查询单个值和查询某一范围内的数据的性能的稳定,也体现了Redis 对性能最求的极致 1.先本地启动Redis 服务 Spring boot pom 和 application.properties <dependency> <groupId> org.springframework.boot </groupId> <artifactId> spring-boot-starter-cache </artifactId> </dependency> <dependency> <groupId> org.springframework.boot </groupId> <artifactId> spring-boot-starter-data-redis </artifactId> </dependency> # Redis 数据库索引(默认为 0 ) spring.redis.database = 2 # Redis 服务器地址 spring.redis.host = localhost # Redis 服务器连接端口 spring.redis.port = 6379 # Redis 服务器连接密码(默认为空) spring.redis.password = # 连接池最大连接数

一主两从三哨兵(三)-springboo连接使用

不问归期 提交于 2020-08-12 07:10:30
redis-sentinel 项目连接 1、一主两从三哨兵模式,实现springboot项目的链接使用示例 2、maven主要依赖: org.springframework.data spring-data-redis 2.3.2.RELEASE redis.clients jedis 3.3.0 3、哨兵配置: #哨兵的配置列表 spring.redis.sentinel.master=mymaster spring.redis.sentinel.nodes=192.168.111.129:27000,192.168.111.130:27001,192.168.111.131:27002 spring.redis.sentinel.password=123456 spring.redis.password=123456 4、测试示例: @Test public void testString (){ stringRedis.set("name", "dingzhen"); System.out.println(stringRedis.get("name")); } 5、成功输出展示: 2020-08-08 11:21:13.511 INFO 7884 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor :

Redis学习笔记

偶尔善良 提交于 2020-08-11 23:25:02
教学视频 Redis官网 Redis中文网 本文用到的Java源码 - - - 01.NoSQL入门概述-上 02.NoSQL入门概述-下 03.当下NoSQL应用场景简介 04.NoSQL数据模型简介 05.NoSQL数据库的四大分类 06.分布式数据库CAP原理 07.安装 08.HelloWorld 09.启动后杂项基础知识 10.常用五大数据类型简介 11.Key关键字 12.String 13.List 14.Set 15.Hash 16.ZSet 17.配置文件介绍 18.持久化之RDB 19.持久化之AOF 20.事务 21.消息订阅发布简介 22&23.主从复制 24.Jedis_测试联通 25.Jedis_常用API 26.Jedis_事务 27.Jedis_主从复制 28.Jedis_JedisPool 29.待学 - - 01.NoSQL入门概述-上 1.互联网时代背景下大机遇,为什么用NoSQL 1.单机MySQL的美好年代 在90年代,一个网站的浏览量一般都不大,用单个数据库完全可以轻松应付。 在那个时候,更多的都是静态网页,动态交互类型的网站不多。 DAL:Data Access Layer 上述架构下,我们来看看数据存储的瓶颈是什么? 数据量的总大小一个机器放不下时 数据的索引(B+ Tree)一个机器的内存放不下时 浏览量(读写混合)一个实例不能承受

spring-data-redis2.0以上配置redis连接

偶尔善良 提交于 2020-08-11 09:59:18
1.所需的maven依赖 < dependency > < groupId > org.springframework.data </ groupId > < artifactId > spring-data-redis </ artifactId > < version > 2.0.0.RELEASE </ version > </ dependency > < dependency > < groupId > redis.clients </ groupId > < artifactId > jedis </ artifactId > < version > 2.9.0 </ version > </ dependency > < dependency > < groupId > org.springframework </ groupId > < artifactId > spring-xxx </ artifactId > </ dependency > 此处需要注意的是spring-data-redis2.0以上版本所需的jedis版本为2.9.0 目前最新的版本也为2.9.0 否则会报ClassNotFoundException或者NoSuchMethodError等异常 spring-xxx即为spring其他依赖的包,网上很多 找到粘贴吧

Spring Boot Sample 022之spring-boot-data-redis-lettuce

一世执手 提交于 2020-08-11 07:29:51
一、环境 Idea 2020.1 JDK 1.8 maven 二、目的 spring boot 通过lettuce整合redis gitHub地址: https://github.com/ouyushan/ouyushan-spring-boot-samples 三、步骤 3.1、点击File -> New Project -> Spring Initializer,点击next 3.2、在对应地方修改自己的项目信息 3.3、选择Web依赖,选中Spring Web、Spring Boot Redis。可以选择Spring Boot版本,本次默认为2.2.7,点击Next 3.4、项目结构 四、添加文件 pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>

redis 分布式锁

倾然丶 夕夏残阳落幕 提交于 2020-08-11 05:26:46
分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁; 3. 基于ZooKeeper的分布式锁 错误示例1 比较常见的错误示例就是使用 jedis.setnx() 和 jedis.expire() 组合实现加锁,代码如下: public static void wrongGetLock1(Jedis jedis, String lockKey, String requestId, int expireTime) { Long result = jedis.setnx(lockKey, requestId); if (result == 1) { // 若在这里程序突然崩溃,则无法设置过期时间,将发生死锁 jedis.expire(lockKey, expireTime); } } setnx()方法作用就是SET IF NOT EXIST,expire()方法就是给锁加一个过期时间。乍一看好像和前面的set()方法结果一样,然而由于这是两条Redis命令,不具有原子性,如果程序在执行完setnx()之后突然崩溃,导致锁没有设置过期时间。那么将会发生死锁。网上之所以有人这样实现,是因为低版本的jedis并不支持多参数的set()方法。 错误示例2 public static boolean wrongGetLock2(Jedis jedis, String

你离高薪 offer 只差一个Redis入门,我是认真的

半世苍凉 提交于 2020-08-11 03:15:54
你离高薪 offer 只差一个Redis入门,我是认真的 说起来,可能有些小伙伴会不相信,我是第一次用 Redis,真的。因为公司小,业务量小,Redis 根本派不上用场。不过,最近打算把系统升级一下,顺带把当下时髦的技术入个门,“与时俱进”嘛,虽然进的有“一点点”晚(注意双引号)。 作为一名富有责任心的技术博主,我觉得有必要把我入门 Redis 的过程分享出来,供一些小伙伴作为参考。要是我哪里写错了,别客气,过来给我一巴掌,就行了(温柔点,别打肿,影响颜值就不好了)。 01、Redis 是什么 Redis 是互联网技术领域中使用最广泛的存储中间件,它是 Remote Dictionary Service 三个单词中加粗字母的组合。你别说,组合起来后念着挺自然的。 Redis 以超高的性能、完美的文档、简洁的源码著称,国内外很多大型互联网公司都在用,比如说阿里、腾讯、GitHub、Stack Overflow 等等。它的版本更新非常的快,功能也越来越强大,最初只是用来作为缓存数据库,现在已经可以用它来实现消息队列了。 可以这么说吧,掌握 Redis 已经变成了一项后端工程师必须具备的基础技能。 Redis 的作者是一名意大利人,网名 Antirez,长相还是过得去的,感兴趣的小伙伴可以 Google 一下。知道为什么 Redis 的默认端口是 6379 吗? 据说是手机键盘上

Java操作Redis之Jedis用法详解

大兔子大兔子 提交于 2020-08-11 01:45:11
Redis(Remote Dictionary Server,远程数据字典服务器)是一个开源的高性能内存数据库,常用作缓存服务器使用,也做消息队列使用。因其高性能、丰富的数据类型、可扩展等特性受开发者青睐,这里介绍在java中使用Jedis操作Redis的基本用法。 1. 字符串String。 package com.zws.redis.examples; import java.util.concurrent.TimeUnit; import redis.clients.jedis.Jedis; public class RedisString { public static void main(String[] args) throws InterruptedException { String host = "192.168.137.131"; int port = 6379; String password = "redis"; Jedis jedis = new Jedis(host, port); jedis.auth(password); jedis.ping(); jedis.set("name", "张三"); //设置 jedis.set("age", "23"); String name = jedis.get("name");//获取 String age

美团架构师从应用、原理、集群、拓展、源码等方面深入解析Redis

南笙酒味 提交于 2020-08-11 01:29:38
全书由:基础篇、应用篇、原理篇、集群篇、拓展篇、源码篇六部分组成 总览 由于文档的内容太多,所以只截取了部分内容展示,有想获取完整PDF文档的朋友:点赞后,私信【文档资料】即可(一定要记得关注我,不然没办法回复陌生人私信) 基础篇 Redis基础数据结构 应用篇 分布式锁 延时队列 位图 HyperLogLog 布隆过滤器 简单限流 漏斗限流 GeoHash Scan 原理篇 线程IO模型 通信协议 持久化 管道 事务 PubSub 小对象压缩 主从同步 集群篇 Sentinel Codis Cluster 拓展篇 Stream Info指令 再谈分布式锁 过期策略 LRU 懒惰删除 优雅地使用Jedis 保护Redis Redis安全通信 源码篇 来源: oschina 链接: https://my.oschina.net/u/4338498/blog/4335893