东莞seo网站排名优化,中华艺术宫室内设计,类似于淘宝的网站建设,家装公司哪家好Redis有哪些数据类型
Redis主要有5种数据类型#xff0c;包括String#xff0c;List#xff0c;Set#xff0c;Zset#xff0c;Hash#xff0c;满足大部分的使用要求 Redis的应用场景
总结一
计数器
可以对 String 进行自增自减运算#xff0c;从而实现计数器功能。…Redis有哪些数据类型
Redis主要有5种数据类型包括StringListSetZsetHash满足大部分的使用要求 Redis的应用场景
总结一
计数器
可以对 String 进行自增自减运算从而实现计数器功能。Redis 这种内存型数据库的读写性能非常高很适合存储频繁读写的计数量。
缓存
将热点数据放到内存中设置内存的最大使用量以及淘汰策略来保证缓存的命中率。
会话缓存
可以使用 Redis 来统一存储多台应用服务器的会话信息。当应用服务器不再存储用户的会话信息也就不再具有状态一个用户可以请求任意一个应用服务器从而更容易实现高可用性以及可伸缩性。
全页缓存FPC
除基本的会话token之外Redis还提供很简便的FPC平台。以Magento为例Magento提供一个插件来使用Redis作为全页缓存后端。此外对WordPress的用户来说Pantheon有一个非常好的插件 wp-redis这个插件能帮助你以最快速度加载你曾浏览过的页面。
查找表
例如 DNS 记录就很适合使用 Redis 进行存储。查找表和缓存类似也是利用了 Redis 快速的查找特性。但是查找表的内容不能失效而缓存的内容可以失效因为缓存不作为可靠的数据来源。
消息队列(发布/订阅功能)
List 是一个双向链表可以通过 lpush 和 rpop 写入和读取消息。不过最好使用 Kafka、RabbitMQ 等消息中间件。
分布式锁实现
在分布式场景下无法使用单机环境下的锁来对多个节点上的进程进行同步。可以使用 Redis 自带的 SETNX 命令实现分布式锁除此之外还可以使用官方提供的 RedLock 分布式锁实现。
其它
Set 可以实现交集、并集等操作从而实现共同好友等功能。ZSet 可以实现有序性操作从而实现排行榜等功能。
总结二
Redis相比其他缓存有一个非常大的优势就是支持多种数据类型。
数据类型说明string字符串最简单的k-v存储hashhash格式value为field和value适合ID-Detail这样的场景。list简单的list顺序列表支持首位或者末尾插入数据set无序list查找速度快适合交集、并集、差集处理sorted set有序的set
其实通过上面的数据类型的特性基本就能想到合适的应用场景了。
string——适合最简单的k-v存储类似于memcached的存储结构短信验证码配置信息等就用这种类型来存储。
hash——一般key为ID或者唯一标示value对应的就是详情了。如商品详情个人信息详情新闻详情等。
list——因为list是有序的比较适合存储一些有序且数据相对固定的数据。如省市区表、字典表等。因为list是有序的适合根据写入的时间来排序如最新的***消息队列等。
set——可以简单的理解为ID-List的模式如微博中一个人有哪些好友set最牛的地方在于可以对两个set提供交集、并集、差集操作。例如查找两个人共同的好友等。
Sorted Set——是set的增强版本增加了一个score参数自动会根据score的值进行排序。比较适合类似于top 10等不根据插入的时间来排序的数据。
如上所述虽然Redis不像关系数据库那么复杂的数据结构但是也能适合很多场景比一般的缓存数据结构要多。了解每种数据结构适合的业务场景不仅有利于提升开发效率也能有效利用Redis的性能。 哨兵模式 哨兵的介绍
sentinel中文名是哨兵。哨兵是 redis 集群机构中非常重要的一个组件主要有以下功能
集群监控负责监控 redis master 和 slave 进程是否正常工作。消息通知如果某个 redis 实例有故障那么哨兵负责发送消息作为报警通知给管理员。故障转移如果 master node 挂掉了会自动转移到 slave node 上。配置中心如果故障转移发生了通知 client 客户端新的 master 地址。
哨兵用于实现 redis 集群的高可用本身也是分布式的作为一个哨兵集群去运行互相协同工作。
故障转移时判断一个 master node 是否宕机了需要大部分的哨兵都同意才行涉及到了分布式选举的问题。即使部分哨兵节点挂掉了哨兵集群还是能正常工作的因为如果一个作为高可用机制重要组成部分的故障转移系统本身是单点的那就很坑爹了。
哨兵的核心知识
哨兵至少需要 3 个实例来保证自己的健壮性。哨兵 redis 主从的部署架构是不保证数据零丢失的只能保证 redis 集群的高可用性。对于哨兵 redis 主从这种复杂的部署架构尽量在测试环境和生产环境都进行充足的测试和演练。
官方Redis Cluster 方案(服务端路由查询) redis 集群模式的工作原理能说一下么在集群模式下redis 的 key 是如何寻址的分布式寻址都有哪些算法了解一致性 hash 算法吗
简介
Redis Cluster是一种服务端Sharding技术3.0版本开始正式提供。Redis Cluster并没有使用一致性hash而是采用slot(槽)的概念一共分成16384个槽。将请求发送到任意节点接收到请求的节点会将查询请求发送到正确的节点上执行
方案说明
通过哈希的方式将数据分片每个节点均分存储一定哈希槽(哈希值)区间的数据默认分配了16384 个槽位每份数据分片会存储在多个互为主从的多节点上数据写入先写主节点再同步到从节点(支持配置为阻塞同步)同一分片多个节点间的数据不保持一致性读取数据时当客户端操作的key没有分配在该节点上时redis会返回转向指令指向正确的节点扩容时时需要需要把旧节点的数据迁移一部分到新节点
在 redis cluster 架构下每个 redis 要放开两个端口号比如一个是 6379另外一个就是 加1w 的端口号比如 16379。
16379 端口号是用来进行节点间通信的也就是 cluster bus 的东西cluster bus 的通信用来进行故障检测、配置更新、故障转移授权。cluster bus 用了另外一种二进制的协议gossip 协议用于节点间进行高效的数据交换占用更少的网络带宽和处理时间。
节点间的内部通信机制
基本通信原理
集群元数据的维护有两种方式集中式、Gossip 协议。redis cluster 节点间采用 gossip 协议进行通信。
分布式寻址算法
hash 算法大量缓存重建一致性 hash 算法自动缓存迁移 虚拟节点自动负载均衡redis cluster 的 hash slot 算法
优点
无中心架构支持动态扩容对业务透明具备Sentinel的监控和自动Failover(故障转移)能力客户端不需要连接集群所有节点连接集群中任何一个可用节点即可高性能客户端直连redis服务免去了proxy代理的损耗
缺点
运维也很复杂数据迁移需要人工干预只能使用0号数据库不支持批量操作(pipeline管道操作)分布式逻辑和存储模块耦合等