Redis在项目上的常用操作【二】

Redis的基本操作 SETEX key seconds value设置指定key的值,并将key的过期时间设为seconds 秒 setex name 30 tom。有序集合(sorted set/zset):集合中每个元素关联一个分数(score),根据分数升序排序,没有重复元素。HSET key field value 将哈希表key中的字段field的值设为value。Redis存储的是key-value结构的数据,其中key是字符串类型,集合(set):无序集合,没有重复元素,类似于Java中的HashSet。 阅读详情

Redis的高级用法

redis集群

  • redis 主从复制

概念:持久化保证了即使redis服务重启也不会丢失数据,因为redis服务重启后会将硬盘上持久化的数据恢复到内存中,但是当redis服务器的硬盘损坏了可能会导致数据丢失,如果通过redis的主从复制机制就可以避免这种单点故障。

主从复制原理图:

  • 说明
    • 主redis中的数据有两个副本(replication)即从redis1和从redis2,即使一台redis服务器宕机其它两台redis服务也可以继续提供服务。
    • 主redis中的数据和从redis上的数据保持实时同步,当主redis写入数据时通过主从复制机制会复制到两个从redis服务上。
    • 只有一个主redis,可以有多个从redis。
    • 主从复制不会阻塞master,在同步数据时,master 可以继续处理client 请求。

  • 主从复制实现过程
    由于资源有限,这是测试使用一台Linux系统搭建redis伪集群演示示例:
    • 复制三份redis编译后的文件(编译后的文件默认路径:[/usr/local/redis]
cp -r redis-3.0.0 /usr/local/redis-6379
cp -r redis-3.0.0 /usr/local/redis-6380
cp -r redis-3.0.0 /usr/local/redis-6381
  • 分别修改redis-6380和redis-638的redis.conf配置文件的端口分别改为:6380/6381。并配置master主机地址为:192.168.1.90 6379
# 3) Replication is automatic and does not need user intervention. After a
#    network partition slaves automatically try to reconnect to masters
#    and resynchronize with them.
#
slaveof 192.168.1.90 6379

# If the master is password protected (using the "requirepass" configuration
# directive below) it is possible to tell the slave to authenticate before
# starting the replication synchronization process, otherwise the master will
# refuse the slave request.
  • 依次启动三个redis服务,6379为master主机,6380/6381为slave从机
[root@bogon local] ./redis-6379/bin/redis-server ./redis-6379/bin/redis.conf 
[root@bogon local] ./redis-6380/bin/redis-server ./redis-6380/bin/redis.conf 
[root@bogon local] ./redis-6381/bin/redis-server ./redis-6381/bin/redis.conf 
[root@bogon local ps -ef |grep redis
root      53847      1  0 12:07 ?        00:00:00 ./redis-6379/bin/redis-server *:6379
root      53865      1  0 12:08 ?        00:00:00 ./redis-6380/bin/redis-server *:6380
root      53887      1  0 12:08 ?        00:00:00 ./redis-6381/bin/redis-server *:6381
root      53898  53314  0 12:08 pts/1    00:00:00 grep --color=auto redis
  • 分别在三个redis的bin下执行:./redis-cli -p 6379,./redis-cli -p 6380,./redis-cli -p 6381 启动redis客户端,并查看响应服务器信息命令:info replication
[root@bogon bin]# ./redis-cli -p 6379
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.1.90,port=6380,state=online,offset=1527,lag=1
slave1:ip=192.168.1.90,port=6381,state=online,offset=1527,lag=1
master_repl_offset:1527
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:1526

127.0.0.1:6380> info replication
# Replication
role:slave
master_host:192.168.1.90
master_port:6379
master_link_status:up
master_last_io_seconds_ago:8
master_sync_in_progress:0
slave_repl_offset:1555
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

[root@bogon bin]# ./redis-cli -p 6381
127.0.0.1:6381> info replication
# Replication
role:slave
master_host:192.168.1.90
master_port:6379
master_link_status:up
master_last_io_seconds_ago:7
master_sync_in_progress:0
slave_repl_offset:1597
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

  • 测试redis集群数据读写

redis的master主机可进行数据的读写操作,salve主机只能进行数据的读操作。一定意义上也实现了数据的读写分离。

测试数据如下:master主机读写

127.0.0.1:6379> set name test
OK
127.0.0.1:6379> get name
"test"

6380salve从机读数据:

127.0.0.1:6380> get name
"test"

6381salve从机读数据

127.0.0.1:6381> get name
"test"
127.0.0.1:6381> set name user
(error) READONLY You can't write against a read only slave.

从上面的数据可以看出redis主从复制,数据的写操作只在master主机有效,从机无效。


redis容灾处理-高可用Sentinel哨兵策略

  • Sentinel哨兵介绍:

Sentinel哨兵是redis官方提供的高可用方案,可以用它来监控多个Redis服务实例的运行情况。RedisSentinel是一个运行在特殊模式下的Redis服务器。RedisSentinel是在多个 Sentinel进程环境下互相协作工作的。

  • Sentinel哨兵系统的主要任务
    • 监控:Sentinel不断的检查主服务和从服务器是否按照预期正常工作。
    • 提醒:被监控的Redis出现问题时,Sentinel会通知管理员或其他应用程序。
    • 自动故障转移:监控的主Redis不能正常工作,Sentinel会开始进行故障迁移操作。将 一个从服务器升级新的主服务器。让其他从服务器挂到新的主服务器。同时向客户端 提供新的主服务器地址。
  • 哨兵策略图解

  • redis的哨兵策略实现过程

这里依然使用同一台Linux机器演示redis的哨兵策略的实现

  • Sentinel 配置文件 复制三份sentinel.conf文件,分别修改端口为:26379/26380/26381
drwxr-xr-x. 11 root root 4096 2月   9 20:28 nginx
drwxr-xr-x.  3 root root   16 2月  17 19:41 redis
drwxr-xr-x.  3 root root   16 2月  22 12:01 redis-6379
drwxr-xr-x.  3 root root   16 2月  22 12:02 redis-6380
drwxr-xr-x.  3 root root   16 2月  22 12:02 redis-6381
drwxr-xr-x.  2 root root    6 4月  11 2018 sbin
-rw-r--r--.  1 root root 7109 2月  22 13:09 sentinel26379.conf
-rw-r--r--.  1 root root 7109 2月  22 13:12 sentinel26380.conf
-rw-r--r--.  1 root root 7109 2月  22 13:12 sentinel26381.conf
  • 分别启动这三个哨兵服务,其中一个启动示例如下:
./redis-sentinel   /usr/local/sentinel26379.conf 
58233:X 22 Feb 13:15:29.070 * Increased maximum number of open files to 10032 (it was originally set to 1024).
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 3.0.0 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in sentinel mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 26379
 |    `-._   `._    /     _.-'    |     PID: 58233
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

58233:X 22 Feb 13:15:29.074 # Sentinel runid is a624b22b704383502ea7c1c122f8f6204c5fecfd
58233:X 22 Feb 13:15:29.075 # +monitor master mymaster 127.0.0.1 6379 quorum 2
58233:X 22 Feb 13:15:30.080 * +slave slave 192.168.1.90:6380 192.168.1.90 6380 @ mymaster 127.0.0.1 6379
58233:X 22 Feb 13:15:30.080 * +slave slave 192.168.1.90:6381 192.168.1.90 6381 @ mymaster 127.0.0.1 6379
  • redis通过哨兵策略实现故障转移
  1. 查看redis的服务与哨兵服务的运行状况,可以看到运行正常
[root@bogon ~]# ps -ef |grep redis
root      53847      1  0 12:07 ?        00:00:07 ./redis-6379/bin/redis-server *:6379
root      53865      1  0 12:08 ?        00:00:07 ./redis-6380/bin/redis-server *:6380
root      53887      1  0 12:08 ?        00:00:07 ./redis-6381/bin/redis-server *:6381
root      55208  55055  0 12:26 pts/1    00:00:00 ./redis-cli -p 6380
root      55245  55111  0 12:27 pts/2    00:00:00 ./redis-cli -p 6381
root      58233  55000  0 13:15 pts/0    00:00:01 ./redis-sentinel *:26379 [sentinel]
root      58627  58300  0 13:20 pts/3    00:00:00 ./redis/bin/redis-sentinel *:26380 [sentinel]
root      58718  58646  0 13:21 pts/4    00:00:00 ./redis/bin/redis-sentinel *:26381 [sentinel]
root      58798  58753  0 13:21 pts/5    00:00:00 grep --color=auto redis
  1. 假如6379的master主机宕掉,再次观察下剩余两个slave从机的状态变化,通过其中一个6381的salve从机可以看到master已经变成了6380了
127.0.0.1:6381> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6380
master_link_status:down
master_last_io_seconds_ago:-1
master_sync_in_progress:0
slave_repl_offset:1
master_link_down_since_seconds:12
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
  1. 假如之前宕机的6379服务再次恢复后再次查看6379的服务状态。,可以看到master主机又变成了6379。
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=39828,lag=0
slave1:ip=127.0.0.1,port=6381,state=online,offset=39562,lag=1
master_repl_offset:39828
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:39827
  1. 再次进行数据的读写操作
127.0.0.1:6379> set password 123456
OK
127.0.0.1:6379> get password
"123456"
127.0.0.1:6381> get password
"123456"

redis通过哨兵策略很好的实现了redis高可用容灾处理。

Sentinels哨兵监控 :
1)Sentinel会不断检查Master和Slave是否正常。
2)如果Sentinel挂了,就无法监控,所以需要多个哨兵,组成Sentinel网络,一个健康的 Sentinel至少有3个Sentinel应用。彼此在独立的物理机器或虚拟机。
3)监控同一个Master的Sentinel会自动连接,组成一个分布式的Sentinel网络,互相通信 并交换彼此关于被监控服务器的信息。
4)当一个Sentinel认为被监控的服务器已经下线时,它会向网络中的其它Sentinel进行确 认,判断该服务器是否真的已经下线 。
5)如果下线的服务器为主服务器,那么Sentinel网络将对下线主服务器进行自动故障转移, 通过将下线主服务器的某个从服务器提升为新的主服务器,并让其从服务器转移到新的主服 务器下,以此来让系统重新回到正常状态 。
6)下线的旧主服务器重新上线,Sentinel会让它成为从,挂到新的主服务器下。


redis哨兵机制总结

  • 总结 主从复制,解决了读请求的分担,从节点下线,会使得读请求能力有所下降,Master下 线,写请求无法执行 Sentinel会在Master下线后自动执行故障转移操作,提升一台Slave为Master,并让其它 Slave成为新Master的Slave。
Ubuntu登录界面黑屏?手把手教你排查和修复LightDM启动失败(附debug命令详解) 本文详细介绍了Ubuntu系统中LightDM(Light Display Manager)启动失败导致登录界面黑屏的排查与修复方法。通过系统状态检查、调试模式分析、常见故障解决方案及高级调试技巧,帮助用户快速定位并解决LightDM相关问题,恢复正常的图形登录环境。 阅读详情

相关推荐

用Python+ArcGIS分析厦门共享单车数据:5分钟搞定订单时长与距离分布的可视化

本文详细介绍了如何利用Python和ArcGIS Pro 3.x快速分析厦门共享单车数据,实现订单时长与距离分布的可视化。通过数据清洗、预处理和高级可视化技巧,揭示用户行为特征,为运营优化提供数据支持。文章还提供了环境配置、代码示例和业务洞察,帮助开发者高效完成数据分析任务。

weixin_28327051的博客 336

项目中集成redis

!-- redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- spring2.X集成redis所需common-pool2--> <dependency..

Java—wang的博客 742

PTA 编程题(C语言)-- 然后是几点

PTA 编程题(C语言)-- 然后是几点

LCCprogrammer 5074

redis在项目中的使用

1.导入jedis和池子的jar包 https://mvnrepository.com/artifact/org.apache.commons/commons-pool2/2.3 https://mvnrepository.com/artifact/redis.clients/jedis/2.7.0 2.导入工具类 package com.itheima.utils; import...

kxj19980524的博客 1092

ChatGPT Windows桌面版:从安全下载到高效配置的全流程指南

WebView封装技术是将网页应用转化为独立桌面程序的核心方法,它通过嵌入浏览器内核实现跨平台功能复用。其原理在于利用Electron或Tauri等框架,将Web内容打包进原生应用外壳,同时注入系统级API调用能力。这项技术的工程价值在于显著提升了Web应用的系统集成度和用户体验,使其能够支持全局快捷键、独立进程和本地数据存储等原生特性。在AI助手深度集成工作流的应用场景中,这种封装模式解决了浏览器多标签页切换繁琐、会话管理不便等痛点。本文以ChatGPT桌面客户端为例,详细解析了基于开源项目的安全下载路径

weixin_30437847的博客 482

RTK_ROS_导航(1): GNSS里程计

1. RTK 配置 4G CORS + 4G 网络 + 户外有信号,不能实现RTK,就恢复出厂设置 输出信息包含(一般需要三个同时打开): GAPPA:包含位置信息 GPVTG:包含速度信息 GPHDT:包含定向的朝向信息 2. ROS驱动 驱动安装sudo apt install ros-noetic-nmea-navsat-driver 运行,需要修改该功能包的启动端口,会自动解析上面的3个RTK语句信息roslaunch nmea_navsat_driver nmea_serial_d

旋风小短腿 4265

redis在实际项目中使用实例

代码使用 @Autowired private RedisTemplate&amp;amp;lt;String, String&amp;amp;gt; redisTemplate; ...... // 发送一封激活邮件 // 生成激活码 String activecode = RandomStringUtils.randomNumeric(32); // 将激活码保存到redis,设置24小时失效 redisTemplat...

学亮编程手记 7618

芯片标称具备8kVESD能力却在8kV测试中失效?

芯片级ESD(HBM模型)与系统级ESD(IEC 61000-4-2)存在本质差异:

硬核科技 644

【Redis】快速入门 数据类型 常用指令 在Java中操作Redis

Redis是一个基于内存的key-value结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件。Redis存储的是key-value结构的数据,其中key是字符串类型字符串 string哈希 hash列表 list集合 set有序集合 sorted set / zsetSpring Boot提供了对应的Starter,maven坐标:

Orion 1819

一个超酷的开源uHand2.0机械手掌项目

uHand2.0是深圳乐幻索尔公司开源的一款机械手掌,它长下面这个样子:1、uHand2.0外观图之前在公众号就分享过视频:学习嵌入式可以带娃,不信你们看2、uHand2.0硬件原理图看...

Bruce.yang的嵌入式之旅 4460

RK3588适配Ubuntu系统

RKsdk上支持buildroot以及Debian系统,但是Ubuntu需要自己移植,有很多公司都移植好了可以直接用,这里就总结记录一下我制作Ubuntu的过程。

m0_60805802的博客 5361

【JavaWeb后端学习笔记】Redis常用命令以及Java客户端操作Redis

redis是基于内存的key-value结构的数据库。

wrjwww的博客 1379

从 PI Start Page 到 ESR、ID、SLD,重新理解 SAP PI 的工具访问体系

摘要 SAP PI工具入口设计反映了系统核心分工逻辑。不同角色通过特定入口访问专属工具:集成顾问使用Enterprise Services Builder设计接口,BASIS管理员通过SAP NetWeaver Administrator监控运行状态,技术顾问在Integration Builder配置路由,系统维护则需进入System Landscape Directory。这种设计体现了PI平台将工作划分为管理、技术配置、设计、业务配置和监控五大领域。尤其值得注意的是技术配置与业务配置的连续性关系,如I

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1870

Redis 常用操作命令,非常详细!

下面总结并演示了 Redis 的 常用管理命令、key 操作、字符串、集合、列表、散列类型的操作命令。

mf97532的博客 1829

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Redis操作常用API

Redis操作常用API

小何的博客 1807

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

使用Python操作Redis

大家好,在当今的互联网时代,随着数据量和用户量的爆发式增长,对于数据存储和处理的需求也日益增加。Redis作为一种高性能的键值存储数据库,以其快速的读写速度、丰富的数据结构支持和灵活的应用场景而备受青睐。本文将介绍Redis数据库,并探讨在现代应用程序中如何使用Python操作Redis来提高应用程序的性能和可靠性。

若不知道要驶向哪个码头,那么任何风都不会是顺风。 4762

STM32F407中文手册

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

Redis常用操作及springboot整合redis

今天学习了redis的基本操作,通过今天的学习,对于redis的基本的环境的配置,和对于数据库的操作和使用已经可以掌握了,因为rdis这个数据类型,其实是和java中的数据类型是非常的相似的,并且对于其操作也是极其的相似,所以在理解和进行操作上是没有什么问题的。字符串操作的时候,当默认对于key的值进行设置都是更新的操作.当使用setnx进行设置其值的时候,会进行判断这个key时候存在。Redis中的有序集合也是String类型的集合,同样不允许有重复成员,不同的是每个元素都会关联double类型的分数.

m0_74205854的博客 1308

Redis 常用操作

Sting类型适用场景。

qq_40934195的博客 1131

Redis常用操作命令

Redis常用操作命令,包括Key、字符串、集合、列表、哈希等数据结构的操作命令。

一名80后IT人的成长记录,记录自己在工作、学习中的点点滴滴,在成长的喜悦与忧心的故事里,铭记反脆弱的勇气。 1094

使用Java操作Redis

对常用Redis键操作命令,使用Java操作Redis,配置 Redis 连接信息,操作字符串、列表、集合、散列、有序集合

Five的博客 2303

Java中对Redis的常用操作

Redis(Remote Dictionary Server)是一个开源的内存数据存储系统,它提供了一个高性能的键值对存储,并支持多种数据结构。Redis以其快速、简单和灵活的特性而受到广泛应用。

rqz__的博客 1071

Redis的一些常用操作

一、Redis概述 1、Redis介绍        Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。        Redis是 NoSQL技术阵营中的一员,它通过多种...

IscarVills的博客 336

Redis的介绍及如何在Linux上安装redis、常用命令、Java连接操作Redis

Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串String、哈希表hash、列表list、集合set、有序集合zset(sort set),位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。NoSQL数据库是直接通过键值对的方式取值,数据之间不存在关系SQL数据库。

weixin_67450855的博客 1491

什么是redis? 如何在SpringBoot中集成和操作redis?

本篇将带你快速了解什么是redis,以及学会如何在SpringBoot工程下集成和操作redis数据库。

qq_56999608的博客 1540

Redis常用操作

edis 是一个开源的高性能键值对数据库。它以其出色的性能、可靠性和灵活性而闻名,常用于缓存、消息队列、排行榜、实时分析等场景。Redis 支持多种类型的数据结构,如字符串、哈希、列表、集合、有序集合等。它还提供了丰富的特性,包括事务、持久化、复制和高可用性等。

小林的博客 915
上一篇: Redis在项目上的实战操作【一】
下一篇: 一款超棒的redis开源客户端工具
Coding测试
博客等级 码龄7年 28粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值