spring 中 Spring-data-redis的配置与使用

SpringBoot整合连接Redis集群 第一步,新建项目maven项目,添加依赖 (1)本文所采用的SpringBoot的版本如下 org.springframework.boot spring-boot-starter-parent 2.0.2.RELEASE (2)加入Redis相关依赖 org.springframework.boot spring-boot-starter-data-redis redis.clients jedis 第二步,applicati 阅读详情

介绍

spring-Data-Redis项目(简称SDR)是对Redis的Key-Value数据存储操作提供了更高层次的抽象,提供了一个对几种主要的redis的Java客户端(例如:jedis,jredis,jdbc-redis等)的抽象,使开发中可以几乎完全屏蔽具体使用客户端的影响,使业务代码保持较强的稳定性。

Spring-Data-Redis提供了一个基础的泛型RedisTemplate供开发者快速的利用代码完成基础的crud工作。而StringRedisTemplate则提供了最常用的String类型的实现。在实践中可以考虑完全省去dao层的设计,直接在service层注入相应的template实例。

Redis Sentinel是Redis官方提供的集群管理工具,使用一个或多个sentinel和Redis的master/slave可以组成一个群集,可以检测master实例是否存活,并在master实例发生故障时,将slave提升为master,并在老的master重新加入到sentinel的群集之后,会被重新配置,作为新master的slave。这意味着基于Redis sentinel的HA群集是能够自我管理的。

环境

本文基于redis-2.8.19和jedis2.4.2版本。

在一台机器上启动3个redis,一个做master,两个做slave。

Master 端口:6380

Slave1 端口:6381

Slave2端口:6382

Sentinel配置

Master

redis.conf

      port 6380

sentinel.conf

      port 26380

      sentinel monitor mymaster 192.168.0.100 6380 2

Slave1

redis.conf

      port 6381

      slaveof 192.168.0.100 6380

sentinel.conf

      port 26381

      sentinel monitor mymaster 192.168.0.100 6380 2

 

Slave2

redis.conf

      port 6382

      slaveof 192.168.0.100 6380

sentinel.conf

      port 26382

            sentinel monitor mymaster 192.168.0.100 6380 2

Spring配置


<bean id="redisSentinelConfiguration" class="org.springframework.data.redis.connection.RedisSentinelConfiguration">
    <property name="master">  
<bean class="org.springframework.data.redis.connection.RedisNode">
        <property name="name" value="mymaster"> </property>
      </bean>
    </property>
    <property name="sentinels">
       <set>
             <bean class="org.springframework.data.redis.connection.RedisNode"> 
                <constructor-argname="host" value="192.168.0.100"/>  
                <constructor-argname="port" value="26380"/>                  
             </bean>
             <bean class="org.springframework.data.redis.connection.RedisNode">
                    <constructor-argname="host" value="192.168.0.100"/>
                    <constructor-argname="port" value="26381"/>               
             </bean>
             <bean class="org.springframework.data.redis.connection.RedisNode">                   
                    <constructor-argname="host" value="192.168.0.100"/>
                    <constructor-argname="port"  value="26382"/>               
             </bean>
       </set>
    </property>
</bean>
 
  <bean id="jeidsConnectionFactory" 
       class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
      <constructor-argref="redisSentinelConfiguration"/>
  </bean>
   
  <bean id="redisTemplate"  
     class="org.springframework.data.redis.core.RedisTemplate" 
p:connection-factory-ref="jeidsConnectionFactory"/>
  </bean>

程序


写数据

         public void set(final byte[] key, finalbyte[] value,final longliveTime) {

      redisTemplate.execute(new RedisCallback() {

         public LongdoInRedis(RedisConnectionconnection)

                throws DataAccessException {

            connection.set(key,value);

            if (liveTime > 0) {

                connection.expire(key,liveTime);

            }

            return 1L;

         }

      });

   }

读数据

         public byte[] get(final byte[] key) {

      return redisTemplate.execute(new RedisCallback() {

         public byte[]doInRedis(RedisConnection connection)

                throws DataAccessException {

                returnconnection.get(key);

         }

      });

   }

删数据

         public long del(final String...keys) {

      return redisTemplate.execute(new RedisCallback() {

         public LongdoInRedis(RedisConnectionconnection)

                throws DataAccessException {

            longresult = 0;

            for (inti = 0; i < keys.length; i++) {

                result = connection.del(keys[i].getBytes());

            }

            returnresult;

         }

      });

   }

注意

1)             在配置Redis的sentinel.conf文件时注意使用外部可以访问的ip地址,因为当redis-sentinel服务和redis-server在同一台机器的时候,主服务发生变化时配置文件中将主服务ip变为127.0.0.1,这样外部就无法访问了。

2)             发生master迁移后,如果遇到运维需要,想重启所有redis,必须最先重启“新的”master节点,否则sentinel会一直找不到master。


另外也可以用下面的例子来配置redis
  <context:component-scan base-package="com.letv.ims.dao"/>
    <bean id="sentinelConfig" class="org.springframework.data.redis.connection.RedisSentinelConfiguration">
        <constructor-arg name="master" value="mymaster"/>
        <constructor-arg name="sentinelHostAndPorts">
            <set>
                <value>10.114.180.109:26379</value>
                <value>10.114.180.107:26379</value>
            </set>
        </constructor-arg>
    </bean>

    <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <property name="maxIdle" value="100"/>
        <property name="maxTotal" value="1000"/>
        <property name="maxWaitMillis" value="20000"/>
        <property name="testOnBorrow" value="true"/>
        <property name="testOnReturn" value="true"/>
    </bean>

    <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
        <constructor-arg ref="sentinelConfig"/>
        <property name="timeout" value="5000"/>
        <property name="usePool" value="true"/>
        <property name="password" value="test@test"/>
        <property name="database" value="7"/>
        <property name="poolConfig" ref="poolConfig"/>
    </bean>

    <bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
        <property name="connectionFactory" ref="jedisConnectionFactory"/>
    </bean>


Spring Data Redis集群配置与优化实战 Redis作为高性能键值数据库,其集群化部署是保障系统高可用的关键技术。通过主从复制、哨兵模式和分片集群三种架构,Redis实现了读写分离、自动故障转移和数据水平扩展等核心能力。Spring Data Redis作为Java生态的标准集成方案,通过Lettuce客户端和YAML配置简化了集群对接流程。在实际工程中,合理的连接池参数配置、拓扑自动刷新机制以及跨槽位命令处理策略,都是确保Redis集群稳定运行的关键要素。本文以Spring Boot项目为例,详细解析了不同集群模式的配置模板与生产环境调优经验,特 阅读详情

相关推荐

HarmonyOS开发第一步:Dev Eco Studio4.0保姆级安装配置指南(含Node.js环境)

本文提供HarmonyOS开发环境搭建的保姆级教程,重点详解Dev Eco Studio 4.0的安装与配置,并攻克Node.js环境与Ohpm包管理器的关键设置难点。通过清晰的步骤指引,帮助开发者从零开始,高效完成开发环境部署,顺利迈出鸿蒙应用开发的第一步。

lake5的博客 569

关于org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis问题

Unable to connect to Redis

weixin_50786236的博客 7118

别再乱点U盘里的.exe了!手把手教你彻底清除那个伪装成Usb Disk的蠕虫病毒

本文详细介绍了如何识别、清除和预防伪装成Usb Disk的蠕虫病毒。从识别感染迹象到安全备份文件,再到深度清理病毒残留和构建防护策略,提供了一套完整的U盘病毒解决方案。特别提醒用户注意U盘病毒的风险,并养成良好的使用习惯。

weixin_30496999的博客 665

redis-sentinel 做HA

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34019929的博客 186

论文解析-sciPENN

用这2个CITE-seq共有的protein作为训练集,分别将他们特有的protein作为测试集,评估sciPENN对CITE-seq数据集中缺失的protein丰度预测准确度。来自Seurat 4 的PBMC数据集,样本被注射水疱性口炎病毒 (VSV) 载体 HIV 疫苗,数据集包含每个样本注射疫苗0天、3天、7天的CITE-seq数据。PBMCs作为训练集,MALT作为测试集,利用scRNA-seq测试17个蛋白质表达水平。Monocyte:随机取4个样本作为训练集,剩余4个样本作为测试集。

weixin_46065198的博客 1021

中移物联ML307C模组OPENCPU开发环境搭建全攻略

本文详细介绍了中移物联ML307C模组OPENCPU开发环境搭建的全过程。从OPENCPU模式的核心优势解析,到SDK获取、Python与scons工具安装,再到解读SDK目录结构与实战编译命令,最后提供常见问题避坑指南,帮助开发者快速构建高效的物联网应用编译环境。

weixin_29168393的博客 741

springboot连接redis出现org.springframework.data.redis。RedisConnectionFailureException异常

org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to 192.168.36.129:6379 如果你的springboot连接redis异常跟我一样,也是无法连接,请往下接着看。 一、 查看application资源

m0_67393828的博客 1万+

Creo二次开发环境配置与DLL项目实战指南(Creo8.0+VS2019)

本文详细介绍了Creo8.0与VS2019环境下的二次开发配置与DLL项目实战指南,涵盖环境准备、版本匹配、DLL项目创建、核心代码编写、部署调试及常见报错处理。重点解析了Creo二次开发中的关键配置和优化技巧,帮助开发者高效解决实际问题。

weixin_28432777的博客 516

Spring Data Redis的配置、连接及常用方法的使用

Spring Data Redis的概述 Spring Data Redis是Spring大家族的一部分 提供了在Spring应用中通过简单的配置访问Redis服务 对Redis底层开发包(Jedis JRedis RJC)进行了高度封装 RedisTemplate提供了Redis的各种操作 异常处理及序列化 支持发布订阅 并对Spring 3.1 cache进行了实现 Spring Data R...

"✧treasure mountain✧" 1万+

Android车载桌面开发实战:从CarLauncher源码解析到自定义Launcher开发(Android 11)

本文深入解析了Android 11中CarLauncher的源码架构与核心模块,并提供了从零开始定制开发车载Launcher的完整实战指南。内容涵盖车载桌面的独特定位、驾驶场景优化、多屏协同、动态内容嵌入等核心挑战,以及如何构建符合安全规范、体验流畅的自定义车载桌面应用,是车载应用开发者提升系统级定制能力的实用参考。

weixin_29266647的博客 515

从零开始:C#上位机集成YOLO完成摄像头目标追踪(保姆级教程)

新手入门C#上位机+YOLO做摄像头目标追踪,最忌讳的是“只抄代码,不懂逻辑”。这个教程不仅给了完整代码,还把核心原理和踩坑点都讲清楚了,新手跟着走,不仅能跑通demo,还能理解为什么这么写。如果你们在运行时遇到具体问题,比如模型导出失败、代码报错,都可以在评论区留言,我会一一解答。后续也可以出一期工业相机+YOLO目标追踪的教程,帮助大家把demo落地到实际生产中。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1028

Spring Data Redis配置+源码解析

Spring Data Redis配置+源码解析 Spring Data Redis简介 Spring-data-redis是spring大家族的一部分,提供了在srping应用中通过简单的配置访问redis服务,对reids底层开发包(Jedis, JRedis, and RJC)进行了高度封装,RedisTemplate提供了redis各种操作、异常处理及序列化,支持发布订阅,并对spring...

qq_45320191的博客 473

Hermes 教程 05:多 Agent 编排

本文介绍了Hermes v0.13.0中的四种多Agent协作模式:1)delegate_task快速子任务模式,适合2-3个独立并行任务;2)spawn子Agent模式,实现零成本并行多步流水线;3)tmux交互子Agent模式,支持长期自主任务;4)全新Kanban看板系统,提供持久化AI团队协作框架。各模式在隔离级别、时长、工具访问和适用场景上存在差异,其中spawn模式通过独立上下文窗口实现零上下文成本。文章详细说明了每种模式的使用方法、限制条件和典型应用场景,并提供了具体代码示例和可视化流程图。K

程序猿_三产 534

scrcpy 安卓投屏完整指南:免 Root 不装 App,3 分钟让手机秒变电脑大屏

scrcpy 是免 Root、不装 App 的安卓投屏工具:手机连上电脑,约 1 秒后画面就出现在窗口里,鼠标键盘直接操控。本文带你 3 分钟跑通,老手可跳着查表。 ## 📱 上手最短路径:手机 3 步 + 电脑 1 条命令 这一节只做一件事:让手机画面第一次出现在你的电脑屏幕上,每步都标了完成标志。 📱 手机端(一次性操作,约 3 分钟): 1. 设置 → 关于手机 → 连续点击"版

gitblog_00115的博客 398

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

spring data redis配置

首先要搞清楚redis、Jedis、spring data redis的区别。Redis是基于key-value的非关系型数据库,由ANSI C编写;Jedis是redis官方推出的JAVA操作redis的SDK;Spring Date Redis则是由Spring官方推出方便操作Redis的SDK,它是基于Jedis,但是使用起来更为方便。 1 pom.xml<properties>

warrah 南极狼 1528

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Spring-Data-Redis实战-配置及基本API

Spring-Data-Redis是Spring-Data项目的一个子项目,主要用于操作Redis,通过Spring-data-redis工具,使得操作Redis以更加面向对象的方式。 Spring-data-redis配置 引入依赖如下 注意版本这里以2.1.16.RELEASE。 Bean配置 在Spring Boot 2.X中,有两种不同的使用操作,一种是使用Jedis,一种是使用Lettuce,现在主流后者。 连接池的配置 @Bean public JedisPoolConfig poolConf

JavaEdge全是干货的技术号 2198

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

spring-data-redis配置

1:单redis模式下 properties文件配置 #JedisPoolConfig的参数 #最大连接数 redis.pool.maxTotal=30 #最大空闲时间 redis.pool.maxIdle=10 #每次最大连接数 redis.pool.numTestsPerEvictionRun=1024 #释放扫描的扫描间隔 redis.pool.timeBetweenEvicti

blogzlh的专栏 1517

SPRING DATA - REDIS配置

前段时间由于业务需要,研究了下redis,第一次接触redis,没有详细的研究,只把它当着工具来用,以后有时间慢慢研究下,简单的看了下redis的官网(http://www.redis.io/),Commands Clients Documentation这3个方面看完已了解了大部分情况,看了java Clients,redis官网比较推荐Jedis,而spring对redis的客服端做了一个

互联网架构之路 1万+

Spring Data Cache、Redis配置序列化为JSON

依赖 配置文件 配置缓存类型,HOST、用户名等属性 配置类 配置RedisTemplate的序列化和Spring Data Cache的序列化 测试 执行代码,可以看到redis中的数据已经被序列化为JSON格式了。 源码地址: https://github.com/DDDInJava/portal/tree/Spring_Data_Cache_Redis ...

DDDInJava 970

Spring-data-redis配置及使用示例

Spring-data-redis配置及使用示例 一、添加maven依赖 org.springframework.data spring-data-redis 1.5.0.RELEASE provided redis.clients jedis 2.6.3 provided org.apache.commons commons-pool2 2.3 provided org.

Flyer的后花园 4770

spring-data-redis 配置

一、状态: 已经在linux服务器搭建好redis单个节点,以及redis集群(伪分布式)。 redis单个节点,ip为39.106.13.171,端口为默认端口6379 redis集群,ip39.106.13.171。端口为7001-7006。 二、想要实现目标: 使用spring-data-redis,完成对单个节点以及集群的操作 三、实现: (一)r

anchorjxb的博客 598

Spring Data Redis集群部署:Sentinel和Cluster模式的详细配置教程

Spring Data Redis是Java开发者操作Redis的高效工具,它将Spring的模板化设计与Redis的高性能完美结合,显著提升开发效率。本文将详细介绍如何使用Spring Data Redis配置Sentinel和Cluster两种高可用集群模式,帮助你轻松实现Redis的分布式部署。 ## 📌 核心配置类解析 Spring Data Redis提供了两个核心配置类来支持不同

gitblog_00469的博客 482

Redis配置-spring-data-jedis集群配置

1 maven依赖 <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>2.1.10.RELEASE</version...

musi_m的博客 307

spring data redis 配置redis序列化

默认的存redis list hash数据结构会乱码,需要重新设定序列化配置; redisConfig package com.adley.studyspringdata.config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotatio

AdleyTales的技术博客 803
上一篇: Redis keys 性能问题
下一篇: Spring mvc4使用JSON
大树叶
博客等级 码龄12年 1171粉丝 664原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值