Spring Data Redis

redis执行Lua脚本

拟墨画扇 提交于 2021-02-04 04:56:20
https://blog.csdn.net/mytt_10566/article/details/99732583 jianshu.com/p/366d1b4f0d13 Redis Lua 这个技术,我之前就在关注,今天有空,我把项目中基于Redis实现的ID生成器改成用lua脚本实现,防止并发id冲突问题 Redis中使用Lua的好处 减少网络开销。可以将多个请求通过脚本的形式一次发送,减少网络时延 原子操作。redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。因此在编写脚本的过程中无需担心会出现竞态条件,无需使用事务。 复用。客户端发送的脚步会永久存在redis中,这样,其他客户端可以复用这一脚本而不需要使用代码完成相同的逻辑。 Redis Lua脚本与事务 从定义上来说, Redis 中的脚本本身就是一种事务, 所以任何在事务里可以完成的事, 在脚本里面也能完成。 并且一般来说, 使用脚本要来得更简单,并且速度更快。 使用事务时可能会遇上以下两种错误: 事务在执行 EXEC 之前,入队的命令可能会出错。比如说,命令可能会产生语法错误(参数数量错误,参数名错误,等等),或者其他更严重的错误,比如内存不足(如果服务器使用 maxmemory 设置了最大内存限制的话)。 命令可能在 EXEC 调用之后失败。举个例子,事务中的命令可能处理了错误类型的键

Spring Data Redis 使用Lettuce在Redis集群中无法高可用

落爺英雄遲暮 提交于 2021-01-23 00:27:25
Spring Data Redis 使用Lettuce在Redis集群中无法高可用 Spring boot 2.1.X 下Spring-data-redis-start 使用 Lettuce 作为Redis连接池 问题场景 在App运行期间Redis集群中某个Master节点 Shutdown,导致应用连接Redis报错,错误信息 连接超时。 解决方案 Lettuce 解决方法 使用 RedisClusterClient.reloadPartitions 自动reload pattitions。 链接地址: https://lettuce.io/core/release/reference/index.html#redis-cluster.refreshing-the-cluster-topology-view Spring-data-redis 解决方法 重写 RedisConnectionFactory Bean @Data @Component public class RedisConfig { @Autowired RedisProperties redisProperties; @Bean public RedisConnectionFactory newLettuceConnectionFactory() { ClusterTopologyRefreshOptions

spring-data-redis lettuce cluster scan 问题

假如想象 提交于 2021-01-22 21:07:31
如果redis 集群中某一台master down ,并且由一台slave 节点升级为master ,在使用spring-data-redis 执行scan 的时候还是会继续去连接down 的节点。导致异常。看了下是lettuce 的问题。因为原生的lettuce 使用也有问题。解决方案,就是过滤掉down 的节点。 Partitions partitions = connection.getPartitions(); System.out.println(partitions); RedisAdvancedClusterCommands<String, String> sync = connection.sync(); for (RedisClusterNode partition : partitions) { if (partition.isConnected() && partition.is(RedisClusterNode.NodeFlag.MASTER)) { RedisClusterCommands<String, String> syncConnection = sync.getConnection(partition.getNodeId()); KeyScanCursor<String> scan = syncConnection.scan(match);

spring集成redis spring-data-redis

隐身守侯 提交于 2020-12-16 23:31:57
spring-data-redis封装了redis的操作,很方便的在项目中使用redis 整合spring-data-redis非常简单,一共需要修改3个文件。1.pom.xml 2.application-context.xml 3.redis.properties 1.在pom中添加spring-data-redis和redis的依赖 <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.8.4.RELEASE</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> 2.在spring配置文件中增加相关配置 ps:密码是可选的 <bean id="jedisConnFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:host-name="${redis.host}"

Spring Boot 集成Spring Data

夙愿已清 提交于 2020-12-16 23:31:39
参考文档: Reference 30.Working with NoSQL Technologies (使用NoSQL技术) Spring Data 提供额外的模块帮助你接入各种各样的NoSQL技术,有MongoDB,Neo4J,ElasticSearch,Solr,Redis,Gemfire,Cassandra,Couchbase 还有 LDAP。Spring Boot 为上面的中间件提供自动配置文件。你可以使用它们,但是必须自己配置。请参考Spring-Data相关文档 Spring Boot Data Reference 。 30.1 Redis ( Reference_2.0.3.RELEASE ) Redis 集群安装 参考:https://www.cnblogs.com/yuanermen/p/5717885.html Error 4 Ruby required >= 2.2.2 https://blog.csdn.net/lixwjava/article/details/50408070 1.New Features 这一节简要的介绍了各个在新版本特性和要注意的方面。(1.5>1.6>1.7>1.8>2.0新特性) Spring Data Redis 1.8中的新功能 < 5/6/7 略> Jedis更新到2.9 Lettuce更新到4.2(JDK 版本最低 1.8)

SpringBoot | 集成Redis

冷暖自知 提交于 2020-12-16 10:39:21
Windows下安装: https://github.com/MicrosoftArchive/redis/releases zip下就解包到自定义目录下,msi就跟着步骤安装 进入安装目录下运行命令, redis-server.exe redis.windows.conf 如上图就表示成功安装 在springboot集成redis: doc: https://spring.io/projects/spring-data-redis 依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 配置文件application.properties: spring.redis.host= 127.0 . 0.1 spring.redis.port = 6379 来源: oschina 链接: https://my.oschina.net/u/4389035/blog/4126330

springboot Redis 布隆过滤器

℡╲_俬逩灬. 提交于 2020-12-06 19:53:35
一、布隆的定义是什么? 布隆过滤器(英语:Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以 用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。 Bloom Filter(BF)是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。 它是一个判断元素是否存在集合的快速的概率算法。Bloom Filter有可能会出现错误判断,但不会漏掉判断。也就是Bloom Filter判断元 素不再集合,那肯定不在。如果判断元素存在集合中,有一定的概率判断错误。因此,Bloom Filter”不适合那些“零错误的应用场合。 而在能容忍低错误率的应用场合下,Bloom Filter比其他常见的算法(如hash,折半查找)极大节省了空间。 二、布隆的原理是什么 布隆过滤器的原理是,当一个元素被加入集合时,通过K个散列函数将这个元素映射成一个位数组中的K个点,把它们置为1。检索时,我 们只要看看这些点是不是都是1就(大约)知道集合中有没有它了:如果这些点有任何一个0,则被检元素一定不在;如果都是1,则被检 元素很可能在。这就是布隆过滤器的基本思想。 Bloom Filter跟单哈希函数Bit-Map不同之处在于:Bloom

SpringSession实战项目(基于SpringBoot项目)【附源码】

佐手、 提交于 2020-11-25 13:51:23
Python实战社群 Java实战社群 长按识别下方二维码, 按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群 ▲ 作者丨怀瑾握瑜 来源链接: https://www.cnblogs.com/lxyit/p/9720159.html spring-boot 整合 spring-session 的自动配置可谓是开箱即用,极其简洁和方便。这篇文章即介绍 spring-boot 整合 spring-session,这里只介绍基于 RedisSession 的实战。 考虑到 RedisSession 模块与 spring-session v2.0.6 版本的差异很小,且能够与 spring-boot v2.0.0 兼容,所以实战篇是基于 spring-boot v2.0.0 基础上配置 spring-session。 配置 spring-session 引入 spring-session 的 pom 配置,由于 spring-boot 包含 spring-session 的 starter 模块,所以 pom 中依赖: <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> <

补习系列(14)-springboot redis 整合-数据读写

跟風遠走 提交于 2020-11-24 03:55:46
[TOC] 一、简介 在 补习系列(A3)-springboot redis 与发布订阅 一文中,我们介绍了使用 Redis 实现消息订阅发布的机制,并且给出了一个真实用例。 然而,绝大多数场景下 Redis 是作为缓存被使用的(这是其主要优势)。除此之外,由于Redis 提供了 AOF以及RDB两种持久化机制,某些情况下也可以作为临时数据库使用。 本次将介绍 SpringBoot 中如何使用 Redis 进行缓存读写。 Redis 的基本命令 在学习之前,需要先了解一些Redis 的基本命令,可以 参考这里 http://www.redis.cn/ 二、SpringBoot Redis 读写 A. 引入 spring-data-redis 添加依赖 <!-- redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>${spring-boot.version}</version> </dependency> spring-boot-starter-redis在1.4版本已经废弃 配置redis连接 application.properties # redis 连接配置

分布式缓存技术redis学习系列

耗尽温柔 提交于 2020-11-19 01:03:34
分布式缓存技术redis学习系列(一)——redis简介以及linux上的安装以及操作redis问题整理 分布式缓存技术redis学习系列(二)——详细讲解redis数据结构(内存模型)以及常用命令 分布式缓存技术redis学习系列(三)——redis高级应用(主从、事务与锁、持久化) 分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作) 分布式缓存技术redis学习系列(五)——spring-data-redis与JedisPool的区别、使用ShardedJedisPool与spring集成的实现及一致性哈希分析 分布式缓存技术redis学习系列(六)——sentinel哨兵机制 分布式缓存技术redis学习系列(七)——spring整合jediscluster 分布式缓存技术redis学习系列(八)——JedisCluster源码解读:集群初始化、slot(槽)的分配、值的存取 分布式缓存技术redis学习系列(九)——Redis主从实现读写分离 Jedis的Publish/Subscribe功能的使用 结合实际项目理解集群和分布式的关系 来源: oschina 链接: https://my.oschina.net/u/4316056/blog/4002586