redis
山鸡哥w
目的虽有却无路可循,我们称之为路的,无非是踌躇
展开
-
Redis(六)——限流算法:滑动时间窗口限流和漏斗限流
本文主要总结自《redis深度历险》限流的意义限流一般是指在一个时间窗口内对某些操作请求的数量进行限制,比如一个论坛限制用户每秒钟只能发一个帖子,每秒钟只能回复5个帖子。限流可以保证系统的稳定,限制恶意请求,防止因为流量暴增导致系统瘫痪宕机。常用的限流算法有:滑动窗口、漏斗以及令牌桶。滑动窗口算法rolling Window以限制用户行为为例子,比如一秒内进行某个操作50次,这种行为应该进行限制。滑动窗口就是记录一个滑动的时间窗口内的操作次数,操作次数超过阈值则进行限流。网上找的图:在red原创 2020-08-13 18:27:50 · 5148 阅读 · 0 评论 -
Redis(一)——redis基础
简单介绍:用C语言开发的开源的key-value数据库,redis的数据存在内存中,读写速度快,广泛用于缓存,还可以做分布式锁、消息队列。支持数据持久化、事务、多种集群方案(哨兵、集群)。优点:读写很快,每秒钟可以达到10w的读取速度支持丰富的数据类型。字符串 string、列表list、字典hash,集合set、有序列表zset操作具有原子性:redis所有操作都是原子操作,确保数据一致性多实用应用场景工具:可以用于缓存、消息队列、分布式锁等场景五种基本数据结构字符串Stringre原创 2020-08-01 19:51:25 · 95 阅读 · 0 评论 -
Redis(二)——redis分布式锁
redis除了用作缓存,还经常被用来作为分布式锁。redis分布式锁:redis是单线程的,所有客户端的请求都会以串行的方式执行,redis的操作是原子性的,能够保证数据的一致性。锁超时问题假如服务A和B均请求某个锁,此时服务A获得获得锁。A还没来得及释放锁就出现突发情况宕机了,如果没有一种超时机制,那么锁无法释放,服务B则永远无法获得该锁。此时可以在加锁的时候加上一个超时时间,当持有锁超过该时间限制,自动释放该锁。像上面的情况,服务A宕机了锁没有得到释放,等到超时时间自动释放该锁。这里有出现一个原创 2020-08-01 19:53:15 · 118 阅读 · 0 评论 -
Redis(三)——redis持久化
redis是支持数据持久化的,虽然在生产中经常被当做缓存服务器使用。redis持久化机制分为两种:第一种是快照第二种是AOF日志。快照:快照是一次全量的备份,快照是内存数据的二进制序列化形式,在内存上非常紧凑AOF日志:连续增量备份。AOF日志里面记录的是内存数据修改的指令记录文本快照原理前面redis基础篇中提到,redis是单线程的,这个线程需要同时处理客户端的请求和内存数据结构的逻辑读写,显然难以在保持高性能的前提下完成这些工作。所以redis使用操作系统的多进程COW(copy o原创 2020-08-02 02:41:42 · 160 阅读 · 1 评论 -
Redis(四)——redis主从复制、哨兵模式sentinel
时代在进步,生产环境中单机部署的情况已经越来越少了,redis同样如此。redis集群技术也越来越成熟,在生产中redis集群部署已经是一个常见的技术。 <br>本文主要总结自《redis深度离线》主从同步所有集群模式都离不开一个基础:同步机制。节点之间的数据同步是集群基础,主从同步则是这一切的基础。redis主从同步的意义:有一些企业虽然没有使用redis集群,但是至少做了主从同步。当一个redis master节点挂了的时候,如果要要重启这个redis节点,需原创 2020-08-01 19:46:21 · 205 阅读 · 0 评论 -
Redis(五)——RedisCluster 真正的redis集群原理解析
无论是主从模式还是sentinel哨兵模式,所有客户端请求最终还是由一台redis服务器负担,虽然redis拥有极高的吞吐量,但是单个服务器的性能还是有限的,当数据量请求量超过单台redis服务器负载时,就需要一个真正的redis集群:RedisClusterRedisCluster 是redis作者自己提供的redis集群化方案,它是一个去中心化的集群。RedisCluster将所有数据划分到16384个slots(槽)中,每个redis节点负责一部分的slots,并且每个redis节点读存储全部的槽原创 2020-08-02 21:22:37 · 403 阅读 · 0 评论 -
Redis(六)—— docker redis 主从模式部署
没事自己搞虚拟机在docker里面部署了主从复制模式,直接show code:虚拟机1 作为master# 拉取redis镜像docker pull redis#创建redis-0容器 作为masterdocker run -d -p 6379:6379 --name redis-0 --network host <images-id> redis-server --requirepass <password># --name redis-0 指定redis.原创 2020-05-25 01:12:30 · 350 阅读 · 0 评论