首页 > 自考资讯 > 高考百科

JavaRedis javaredis哨兵模式配置

小条 2024-06-27

1.Redis简介

Redis是一个使用C语言开发的数据库,但与传统数据库不同的是,它存储在内存中,也就是说它是一个内存数据库,因此具有非常快的读写速度。缓存方向。

除了缓存之外,Redis 还常用于分布式锁定和消息队列。

Redis提供了多种数据类型来支持不同的业务场景。 Redis还支持事务、持久化、Lua脚本和各种集群解决方案。

优势:

极高的读写性能

支持数据持久化

支持办公室工作

丰富的数据结构

主/从复制支持

丰富的功能

坏处:

数据库容量受物理内存限制,无法用于大量数据的高性能读写。因此,Redis 的适用场景主要局限于高性能操作和少量数据的计算。

主机已停机。在机器宕机之前,部分数据无法同步到从机。切换IP后,会出现数据不一致,系统可用性降低。

2. 缓存数据处理流程

如果用户请求的数据在缓存中,则直接返回。

如果缓存中不存在,请检查数据中是否存在。

如果数据库中不存在,则更新缓存中的数据。

如果数据库中不存在则返回空数据。

3.Rsdis通用数据库

A.字符串类型String

String数据结构是一种简单的键值类型,可以存储各种数据,包括二进制数据、序列化数据、JSON化数据,甚至图像。最大512M

常用命令:set、get、strlen、exists、dec、incr、setex

应用场景: 计数器:记录播放量、记录访问量(Redis记录总数、MySQL日志)、登录确认码

B.列表类型列表

是一个按插入顺序排序的简单字符串列表,元素可以重复。您可以将元素添加到列表的开头或结尾。底层结构是一个链表。实现的是双向链表,可以支持向后查找和遍历,使操作更加方便,但代价是增加了额外的内存开销。

常用命令:rpush、lpop、lpush、rpop、lrange、llen

应用场景:消息队列、慢查询。

C.集合类型设置

String 类型的无序、唯一集合。

常用命令:sadd、spop、smembers、scard

应用场景:需要存储的数据不能重复、需要对多个数据源进行交集、并集等。

D. hash类型hash

哈希是字符串类型字段和值的映射表,特别适合存储对象。

常用命令:hset、hget、hgetall

应用场景: 系统中存储对象

E.有序集类型zset(排序集)

有序集合zset和set集合一样,是字符串类型元素的集合,不允许有重复的成员。不同之处在于zset 中的每个元素都与一个分数相关联(分数可以重复),redis 使用分数对集合中的成员从小到大进行排序。

常用命令:zadd、zscore、zcard、zrange

应用场景:需要按照特定权重对数据进行排序的场景。

4.Redis单线程模型

Redis 的文件事件处理器以单线程模式运行。

文件事件处理程序的四个部分:

多个套接字(客户端连接)

IO多路复用器(支持多个客户端连接的关键)

文件事件调度程序(将套接字与相应的事件处理程序相关联)

事件处理程序(连接响应处理程序、命令请求处理程序、命令恢复处理程序)

为什么单线程运行这么快?

纯内存操作

避免不必要的上下文切换

避免多个线程之间的争用和切换消耗CPU,避免各种锁定操作。

Redlock是一种Redis分布式锁算法,可以实现多节点分布式锁。

这种方法的特点:

互斥访问:即在任何给定时间只有一个客户端可以获取锁。

避免死锁:客户端最终可能会获得锁,即使锁定资源的服务崩溃或分裂,该锁也会被释放。

容错性:只要大多数Redis 节点(超过一半)保持活动状态,就可以照常提供服务。

14.Redis如何进行内存优化?

控制key的数量:当使用Redis存储大量数据时,通常会有很多key,而太多的key也会消耗大量的内存。

减少键和值对象:减少Redis内存使用最直接的方法是减少键和值的长度。

编码优化:Redis提供了string、list、hash、zet、set等外部类型。然而,Redis内部有不同类型编码的概念,所谓编码是指用于实现它的特定底层数据结果。编码的差异直接影响内存的使用和数据的读写效率。

15、如果你目前有一个读并发非常高的系统,并且可以使用Redis来承受大部分读请求,你会如何设计?

如果读并发较高,首先检查并发量级。 Redis单机上的读取QPS在万级别,每秒几万就可以了,而且由于是单master缓存架构,可以使用多个slave+Sentinel集群来获得每秒10W的读取执行,实现master。 -从机复制,读写分离。

使用哨兵集群的主要目的是提高缓存架构的可用性,解决单点故障问题。主库负责写,多个从库负责读。添加的Redis从实例数量根据读请求的QPS确定。如果您的读取并发量持续增加,您只需添加更多Redis 实例即可。

如果需要缓存1T+的数据,假设每个主节点都存储一部分数据,那么只有n*32G=1T主节点才能支持1T+的存储。数据量巨大。

版权声明:本文转载于网络,版权归作者所有。如有侵权,请联系本站编辑删除。

猜你喜欢