Redis Cluster

为什么 Redis 要比 Memcached 更火?

混江龙づ霸主 提交于 2021-02-18 04:06:32
作者:Kaito 链接:kaito-kidd.com/2020/06/28/redis-vs-memcached/ 前言 我们都知道,Redis和Memcached都是内存数据库,它们的访问速度非常之快。但我们在开发过程中,这两个内存数据库,我们到底要如何选择呢?它们的优劣都有哪些? 为什么现在看Redis要比Memcached更火一些? 这篇文章,我们就从各个方面来对比这两个内存数据库的差异,方便你在使用时,做出最符合业务需要的选择。 要分析它们的区别,主要从以下几个方面对比: 线程模型 数据结构 淘汰策略 管道与 事务 持久化 高可用 集群化 线程模型 要说性能,必须要分析它们的服务模型。 Memcached处理请求采用多线程模型,并且基于IO多路复用技术,主线程接收到请求后,分发给子线程处理。 这样做好的好处是,当某个请求处理比较耗时,不会影响到其他请求的处理。 当然,缺点是CPU的多线程切换必然存在性能损耗,同时,多线程在访问共享资源时必然要加锁,也会在一定程度上降低性能。 Redis同样采用IO多路复用技术,但它处理请求采用是单线程模型,从接收请求到处理数据都在一个线程中完成。 这意味着使用Redis,一旦某个请求处理耗时比较长,那么整个Redis就会阻塞住,直到这个请求处理完成后返回,才能处理下一个请求,使用Redis时一定要避免复杂的耗时操作。 单线程的好处是

Redis 的各项功能解决了哪些问题?

纵饮孤独 提交于 2021-02-17 08:50:41
作者丨blackheart 先看一下Redis是一个什么东西 官方简介解释到:Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存中的一个存储系统,你可以把它作为数据库,缓存和消息中间件来使用。 同时支持strings,lists,hashes,sets,sorted sets,bitmaps,hyperloglogs和geospatial indexes等数据类型。 它还内建了复制,lua脚本,LRU,事务等功能,通过redis sentinel实现高可用,通过redis cluster实现了自动分片。以及事务,发布/订阅,自动故障转移等等。 综上所述,Redis提供了丰富的功能,初次见到可能会感觉眼花缭乱,这些功能都是干嘛用的?都解决了什么问题?什么情况下才会用到相应的功能?那么下面从零开始,一步一步的演进来粗略的解释下。 1 从零开始 最初的需求非常简单,我们有一个提供热点新闻列表的api:http://api.xxx.com/hot-news,api的消费者抱怨说每次请求都要2秒左右才能返回结果。 随后我们就着手于如何提升一下api消费者感知的性能,很快最简单粗暴的第一个方案就出来了:为API的响应加上基于HTTP的缓存控制 cache-control:max-age=600 ,即让消费者可以缓存这个响应十分钟。

Redis 的各项功能解决了哪些问题?

一世执手 提交于 2021-02-17 00:41:23
作者:blackheart 来源:https://www.cnblogs.com/linianhui 先看一下Redis是一个什么东西。官方简介解释到: Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存中的一个存储系统,你可以把它作为数据库,缓存和消息中间件来使用。同时支持strings,lists,hashes,sets,sorted sets,bitmaps,hyperloglogs和geospatial indexes等数据类型。它还内建了复制,lua脚本,LRU,事务等功能,通过redis sentinel实现高可用,通过redis cluster实现了自动分片。以及事务,发布/订阅,自动故障转移等等。 综上所述,Redis提供了丰富的功能,初次见到可能会感觉眼花缭乱,这些功能都是干嘛用的?都解决了什么问题?什么情况下才会用到相应的功能?那么下面从零开始,一步一步的演进来粗略的解释下。 1 从零开始 最初的需求非常简单,我们有一个提供热点新闻列表的api:http://api.xxx.com/hot-news,api的消费者抱怨说每次请求都要2秒左右才能返回结果。 随后我们就着手于如何提升一下api消费者感知的性能,很快最简单粗暴的第一个方案就出来了:为API的响应加上基于HTTP的缓存控制 cache-control:max-age=600

Redis 的各项功能解决了哪些问题?

浪子不回头ぞ 提交于 2021-02-16 23:41:57
原文:https://www.cnblogs.com/linianhui 作者:blackheart 先看一下Redis是一个什么东西。官方简介解释到: Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存中的一个存储系统,你可以把它作为数据库,缓存和消息中间件来使用。同时支持strings,lists,hashes,sets,sorted sets,bitmaps,hyperloglogs和geospatial indexes等数据类型。它还内建了复制,lua脚本,LRU,事务等功能,通过redis sentinel实现高可用,通过redis cluster实现了自动分片。以及事务,发布/订阅,自动故障转移等等。 综上所述,Redis提供了丰富的功能,初次见到可能会感觉眼花缭乱,这些功能都是干嘛用的?都解决了什么问题?什么情况下才会用到相应的功能?那么下面从零开始,一步一步的演进来粗略的解释下。 1 、从零开始 最初的需求非常简单,我们有一个提供热点新闻列表的api:http://api.xxx.com/hot-news,api的消费者抱怨说每次请求都要2秒左右才能返回结果。 随后我们就着手于如何提升一下api消费者感知的性能,很快最简单粗暴的第一个方案就出来了:为API的响应加上基于HTTP的缓存控制 cache-control:max-age=600

Redis简单使用

我与影子孤独终老i 提交于 2021-02-05 16:41:27
Redis 知识点 redis的全称为远程字典服务器 Redis中文网 中Redis的介绍: Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings) , 散列(hashes) , 列表(lists) , 集合(sets) , 有序集合(sorted sets) 与范围查询, bitmaps , hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication) , LUA脚本(Lua scripting) , LRU驱动事件(LRU eviction) , 事务(transactions) 和不同级别的 磁盘持久化(persistence) , 并通过 Redis哨兵(Sentinel) 和自动 分区(Cluster) 提供高可用性(high availability)。 1. 为什么使用Redis redis是一种内存字典,访问速度远快于访问磁盘 随着文件变大,一个data page默认4k,这意味着在没有一个类似B+树的索引时查找一个大文件中的磁盘数据需要的寻址时间变长 随着访问量增加和需要取出的数据量变大磁盘I/O变大,而磁盘带宽有限 关系型数据库必须给出schema类型(字节宽度)以利于存储

ASP.NET Core分布式缓存Redis主从Sentinel哨兵模式实战演练

浪尽此生 提交于 2021-02-02 13:22:57
一、课程介绍 Redis是被广泛使用的基础软件之一。对于工程师和,架构师,运维人员来说,了解Redis的高可用方案和背后的原理,是必备的基础知识。 “高可用性”(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案之一,当用Redis做Master-Slave(主从复制)的高可用方案时,假如master宕机了,它能监控多个master-slave集群,发现master宕机后能进行自动切换。Redis主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。 1.1、本次分享课程包含知识点如下: ★Redis的三种集群解决方案对比。 ★Redis哨兵模式概述。 ★如何使用Dcoker部署Redis主从切换哨兵模式(一主二从三哨兵)。 1.2、一句话总结今天我们学习达到的目标 在ASP.NET Core中如何使用分布式缓存Redis主从Sentinel哨兵模式实现故障转移。 二、Redis的三种集群解决方案对比 redis有三种集群方式:主从复制,哨兵模式和集群。 1)、Redis主从复制特点

redis cluster 压力测试

筅森魡賤 提交于 2021-01-17 16:54:40
测试工具:redis-benchmark 测试版本:redis cluster 5.0.7 测试架构: 基中m1,m2,m3 为三个独立机房 测试结果: 测试脚本: #!/bin/bash #CLIENTS=50 #defaul clients HOST='192.168.1.1' PORT=4000 PWD='benchtest' # if have passwod end_clients=2000 CMDS="set" cmd_arry=(set get incr sadd mset mget hset) #ad hoc test redis command KEYSPACE=100000 TOTAL_REQUESTS=500000 #default 100000 data_size=100 #Data size of SET/GET value in bytes (default 3) CURRENT_DATE=`date +%Y%m%d` bench_file='redis-benchmark'-${CURRENT_DATE} benchmark='/redis/base/bin/redis-benchmark' benchmark(){ cmd=$1 for clients in `seq 50 50 $end_clients`;do if [ x"$pipeline"

分布式缓存Redis集群搭建

只愿长相守 提交于 2021-01-12 06:53:13
redis安装 1.下载tar包至/opt/redis 2.解压tar包 tar -xvf redis-4.0.14.tar.gz 3. cd redis-4.0.14 make一下。 单节点的redis准备就绪。 相关配置准备: 在/usr/local下建立redis-cluster目录,并建7031-7036文件夹 拷贝修改配置文件 cd /opt/redis/redis-4.0.14 cp redis.conf /usr/local/redis-cluster/7031 cd /usr/local/redis-cluster/7031修改redis.conf 修改项如下: (1)绑定端口,port 7031 (2)绑定IP,bind 10.200.195.61 (3)指定数据存放路径,dir /usr/local/redis-cluster/7031 (4)启动集群模式,cluster-enabled yes (5)指定集群节点配置文件,cluster-config-file nodes-7031.conf (6)后台启动,daemonize yes (7)指定集群节点超时时间,cluster-node-timeout 5000 (8)指定持久化方式,appendonly yes 上面红色项目最好全部设置,不然会出意想不到的错误 ,703x最好与节点文件夹保持一致。

在做分布式缓存的时候如何选择,如何解决遇到的坑?

自作多情 提交于 2021-01-10 07:51:22
如今,缓存系统的应用非常广泛,能够用来提高并发数、数据吞吐量,提高快速响应能力。那么当数据量达到一定程度,单机环境可能就显得有些力不从心了,就需要一个分布式缓存系统。 1. 缓存系统的选择 1.1 缓存分类 如上图所示,首先缓存大致可以分为四大类。 CDN 缓存:CDN 即内容分发网络,CDN 边缘节点将数据缓存起来。 反向代理缓存:如 Nginx 的缓存。 本地缓存:代表的有 EhCache 和 Guava Cache。 分布式缓存:各缓存系统。 1.2 分布式缓存 本文主要探讨各分布式缓存系统,如图 1-1 所示,列出了五种: 其中 EvCache 和 Aerospike 使用场景不是那么通用和广泛。 EvCache:是 Netflix 的基于 Memcached & Spymemcached 的缓存方案。 Aerospike:是可基于 SSD 的 KV NoSQL 数据库。 除此之外,还有三种常见缓存系统。 Tair:阿里开源,跨机房、性能随结点添加线性上升、适用大数据量。Tair 还有三种引擎。 LDB: 基于 google levelDB,支持 KV和类 HashMap 结构,性能稍低,持久化可靠性最高。 MDB: 基于 Memcache,支持 KV 和类 HashMap,性能最优,不支持持久化存储。 RDB: 基于 Redis。 Memcache: 不支持数据同步

使用Mac搭建Redis5.0集群笔记

こ雲淡風輕ζ 提交于 2021-01-10 03:52:36
点击上方“ Python学习开发 ”,选择“ 加为星标 ” 第一时间关注Python技术干货! 因为是为了学习集群,所以我这里是单机的。 呼唤集群 为什么呼唤? 1.并发量 redis 官方提供数据并发数10万/每秒 如果需要更高的并发量就需要另外方案了,集群 2.数据量 分布式的简单理解:加机器 应对:大并发量,大数据量 数据分布 顺序分区: 对数据集均分存储到各个节点 哈希分区 计算hash值然后取余数 hash(key)/节点数(例如节点取模的方式) 节点取余 如果节点需要增加,在进行迁移的时候比较耗空间,建议采取翻倍扩容的方式。 比如3个节点迁移,可以通过扩容到6个节点,扩容之后的数据只有50%进行了迁移。 一致性哈希 将token(0-2^32)顺时间对节点进行均分。 如果有节点插入,只会影响到相邻的节点,其他的节点不受影响。 虚拟槽分区 Redis Cluster的分区方式 两者的对比 搭建集群 节点之间是互相通信的 Redis Cluster架构 节点 cluster-enable:yes meet 节点之间消息共享 指派槽 redis指定槽的数据为16384。 key访问的时候,会做hash计算,然后取余数,找到对应在哪个范围的槽 找到对应的节点。 复制 安装 下面的安装方式代码不是很严谨,主要是为了了解Redis Cluster的结构