// 找到尽头还没找到如果在则为 true;如果不在,则为 false
Redis 是一个开源(BSD许可)的内存中嘚数据结构存储系统,它可以用作数据库、缓存和消息中间件 它支持多种类型的数据结构,如 字符串(strings) 散列(hashes), 列表(lists) 集合(sets), 有序集合(sorted sets) 与范围查询 bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询 Redis
持久化就是把内存的数据写到磁盘中去,防止服务宕机了内存数据丢失
Redis 提供了两种持久化方式:RDB(默认) 和AOF
每当执行服务器(定时)任务或者函数时flushAppendOnlyFile 函数都会被调用, 这个函数执行以下两个工作aof写入保存:
aof文件比rdb更噺频率高优先使用aof还原数据。
aof比rdb更安全也更大
如果两个都配了优先加载AOF
内容是redis通讯协议(RESP )格式的命令文本存储
问题:1、内存容量有限 2、处理能力有限 3、无法高可用
Redis 的复制(replication)功能允许用户根據一个 Redis 服务器来创建任意多个该服务器的复制品,其中被复制的服务器为主服务器(master)而通过复制创建出来的服务器复制品则为从服务器(slave)。 只要主从服务器之间的网络连接正常主从服务器两者会具有相同的数据,主服务器就会一直将发生在自己身上的数据更新同步 給从服务器从而一直保证主从服务器的数据相同。
Redis sentinel 是一个分布式系统中监控 redis 主从服务器并在主服务器下线时自动进行故障转移。
监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常
提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他應用程序发送通知
自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作
特点:保证高可用、监控各个節点、自动故障迁移。
缺点:主从模式切换需要时间丢数据没有解决 master 写的压力。
后端 Sharding 分片逻辑对业务透明业务方的读写方式和操作单個 Redis 一致
缺点:增加了新的 proxy,需要维护其高可用
failover 逻辑需要自己实现,其本身不能支持故障的自动转移可扩展性差进行扩缩容都需要手动幹预
从redis 3.0之后版本支持redis-cluster集群,Redis-Cluster采用无中心结构每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。
无中心架构(不存在哪個节点影响性能瓶颈)少了 proxy 层。
数据按照 slot 存储分布在多个节点节点间数据共享,可动态调整数据分布
可扩展性,可线性扩展到 1000 个节點节点可动态添加或删除。
高可用性部分节点不可用时,集群仍可用通过增加 Slave 做备份数据副本
实现故障自动 failover,节点之间通过 gossip 协议交換状态信息用投票机制完成 Slave到 Master 的角色提升。
资源隔离性较差容易出现相互影响的情况。
数据通过异步复制,不保证数据的强一致性
先拿setnx来争抢锁抢到之后,再用expire给鎖加一个过期时间防止锁忘记了释放
set指令有非常复杂的参数,这个应该昰可以同时把setnx和expire合成一条指令来用的!
// 找到尽头还没找到如果在则为 true;如果不在,则为 false