文章分类 - Redis
摘要:本文主要介绍的内容为通过 Node 操作 Redis-Cluster,如果想要通过 Node 来进行操作的话需要使用到一个 npm 的库,叫做 ioRedis 那么接下来就是废话不多说直接开整。 首先初始化一个 node 项目: npm init --y 安装 ioRedis: npm instal
阅读全文
摘要:在开始本文之前首先你得要将Redis-Cluster-搭建环境准备好,因为本文的内容是基于该环境进行演示和介绍的。 利用 Redis 官方提供的 Ruby 脚本安装 Redis cluster,配置并启动 6 台服务器,上面已经介绍过这里直接略过。 下载 Ruby 下载地址:https://ruby
阅读全文
摘要:官方地址:https://redis.io/topics/cluster-tutorial 为 Cluster 启动 6 台 Redis 服务器,准备 6 台 Redis 服务器,下载 Redis 服务器:https://github.com/MicrosoftArchive/redis/relea
阅读全文
摘要:在 Redis Cluster 必须至少有 6 台服务器 在 Redis Cluster 每一台分片服务器都必须是一个 主从结构 在 Redis Cluster 中每一台主分片服务器都是可读可写的 由于每个分片都是主从复制结构, 所以就保证了数据的 '安全性' 和 '可分流性' 但是 Redis C
阅读全文
摘要:虚拟槽哈希 Redis Cluster 采用的是 '虚拟槽哈希' 的方式来分片 在 Redis Cluster 中一共有 0~16383 个虚拟槽, 我们可以把这些槽分配给对应的分片服务器 在存储数据的时候通过 slot = CRC16(key) & 16383 计算出对应数据键的槽值 然后将该值保
阅读全文
摘要:一致性哈希 一致性 Hash 算法将整个哈希值的空间组织成一个 0~2(32) 次方的虚拟的圆环 然后再求出分片服务器的 Hash 值, 根据分片服务器的 Hash 值将服务器配置到虚拟的圆环对应的位置 然后再求出需要保存数据键的 Hash 值, 根据求出的值在虚拟的圆环 顺时针 方向上存入对应的分
阅读全文
摘要:三种常见的哈希分片 节点取余 一致性哈希 虚拟槽哈希 节点取余 主要采取的手段就是:hash(key) % N | | | 1~100 | | | hash(key)%3 | | | | | | | 3,6,9...99 | | 1,4,7...100 | | 2,5,8...98 | | | |
阅读全文
摘要:分布式存储中常见的分片规则 顺序分片 | | | 1~100 | | | | | | | | | | 1~33 | | 34~66 | | 67~100 | | | | | | | 特点: 支持顺序访问 键值和业务相关 可能会出现数据 倾斜 第一点,支持顺序访问 因为数据是有序的,可以按照顺序依次的
阅读全文
摘要:已经解决的问题 主从复制 + Redis-Sentinel 解决了 '高可用性'、'数据安全性'、'数据分流' 的问题 但是由于在主从复制中每台服务器保存的都是相同的内容, 所以还没有解决服务器的 容量 问题 如何解决服务器容量问题,通过 Redis Cluster 来解决 Redis Cluste
阅读全文
摘要:NodeJS 访问 Redis-Sentinel 使用 Redis-Sentinel 之后,由于主节点可能会发生变化,所以我们不能直接操作主节点 只有 Redis-Sentinel 最清楚当前的主节点是谁, 所以我们应该通过 Redis-Sentinel 来操作主节点 官方地址:https://ww
阅读全文
摘要:使用Jedis操作Redis需要导入的jar包如下所示: jedis 常用 API API名称 作用 new Jedis(host, port) 创建jedis对象,参数host是Redis服务器地址,参数port是Redis服务端口 set(key, value) 设置字符串类型的数据 get(k
阅读全文
摘要:Redis高可用性 如果所有用户都从同一台Redis服务器上读写数据,那么如果这台Redis服务器宕机了,用户就不能进行读写了 如果我们有多台Redis服务器,并且每台服务器中存储的内容都相同,那么即使有一台服务器宕机了,用户还可以继续使用其它的Redis服务器 以上这种特点,我们就称之为高可用性
阅读全文
摘要:Redis数据持久化 默认情况下Redis是将数据保存在内存中的,保存在内存中的数据有一个特点,那就是机器重启之后数据就会丢失 所以为了避免服务器重启死机等问题发生的时候,Redis中保存的数据丢失,Redis提供了数据持久化功能 什么是数据持久化 数据持久化就是将内存中的数据写入到磁盘中 Redi
阅读全文
摘要:什么是发布订阅 在发布订阅中有三个角色:发布者(publisher)订阅者(subscriber)频道(channel) 只要发布者将消息发送到对应的频道中,那么所有的订阅者都能收到这个消息,这个就是Redis的发布订阅 🐤现实生活中的发布订阅 张三和李四去商店买鞋,但是最近炒鞋的人比较多,要买的
阅读全文
摘要:什么是ZSet ZSet是有序集合,Redis可以把一堆通过权重排序的数据当做一个Value存储起来 Redis-ZSet类型-增删改查 🐤新增 语法:zadd key 权重 value 权重 value zadd names 99 BNTang 77 zs 88 ww 🦄查询 查询指定排名范围
阅读全文
摘要:Redis-Set类型-增删改查 集合就是一堆无序的数据,Redis可以把一堆无序的数据当做Value存储起来 集合中不能出现重复的数据 🐤新增 语法:sadd key value1, [value2, ...] sadd names BNTang JonathanTang xhh 🍳查询 返回
阅读全文
摘要:Redis-List类型-增删改查 Redis的Value除了可以存储字符串和Hash类型以外,还可以存储List类型 List类型就相当于JavaScript中的数组,可以把整个数组当做一个Value存储起来 List是有序的 ✒增加 从第二个Value开始添加到前一个Value的左边 语法:lp
阅读全文
摘要:Redis-Hash类型-增删改查 Redis的Value除了可以存储普通的字符串类型以外, 还可以存储Hash类型,Hash类型就相当于在JS中的对象, 可以把整个对象当做一个Value存储起来 🐤增加 格式:hset key field value hset user name BNTang
阅读全文
摘要:默认数据库 默认情况下Redis给我们创建了16个数据库(0~15),如果使用的时候没有明确的选中使用哪个数据库, 那么默认使用第0个 🐤切换数据库 select 1 字符串类型 🥣新增 语法: set key value set name BNTang 🥞查询 语法: get key get
阅读全文
摘要:Redis数据类型 Redis是以key-value的形式存储数据的 key无论如何都是字符串类型 Value支持如下的五种数据类型 字符串(String) 哈希(Hash) 列表(list) 无序集合(sets) 有序集合(sorted sets) String字符串 格式: key value
阅读全文