![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
Jayicee
这个作者很懒,什么都没留下…
展开
-
Redis线程模型
Redis它是基于Reactor模式来实现事件处理器。那Redis线程模型包括四个部分:客户端SocketIO多路复用模型。可以实现一个线程监听多个Socket的事件事件分派器。根据Socket中不同的事件来选择不同的事件处理器来执行事件处理器。用来解析相应的事件,并调用方法去处理事件那它的一个执行流程是这样的,客户端通过Socket连上Redis服务器,然后服务端就使用IO多路复用...原创 2020-03-18 17:51:16 · 301 阅读 · 0 评论 -
如何增强Redis主从一致
之前一篇文章讨论了Redis原生如何保证主从一致。链接: Redis主从一致性(2.8版本前后的差别).这是Redis为我们提供的方法,但是初次之外我们还可以使用一些工具来增强一致性半同步复制不一致性的根本原因是主从同步需要一定的时间,如果此时有读操作落在从服务器上就会造成不一致的情况。那解决这个问题最简单的思路就是使用半同步复制。半同步复制就是,如果有一个写操作落在主服务器上,那么这个...原创 2020-02-25 15:55:09 · 730 阅读 · 0 评论 -
保证数据库与缓存一致性的几种策略
文章目录先更新缓存,再更新数据库先更新数据库,再更新缓存先淘汰缓存,再更新数据库先更新数据库,再淘汰缓存分布式系统下,数据库和缓存本来就无法保证强一致性,因为数据库+缓存的操作并不是原子操作,所以在服务过程中,我们可以忍受一段时间内的数据不一致,但是一定要保证最终一致性。而一般来说,有三种更新策略:先更新数据库,再更新缓存先更新缓存,再更新数据库先更新数据库,再淘汰缓存先淘汰缓存,再...原创 2020-02-25 15:28:29 · 479 阅读 · 0 评论 -
Redis的6种淘汰策略和3种删除过期键策略
文章目录6种淘汰策略volatile-lruvolatile-ramdomvolatile-ttlallkeys-lruallkeys-randomnoeviction(默认使用)3种删除过期键策略定时删除惰性删除定期删除Redis中通过maxmemory参数来设定内存的使用上限,当Redis使用内存达到阈值时,会根据配置文件中的设置选取要删除的key来删除,从而给新的键值留出空间。Redis...原创 2020-02-25 00:20:25 · 2039 阅读 · 0 评论 -
Redis之缓存雪崩,穿透,击穿
文章目录缓存雪崩缓存穿透缓存击穿缓存降级缓存预热缓存雪崩缓存雪崩,是指:系统刚上限时,数据还没有加载到缓存中;或者在某一个时间点,缓存中的数据大面积失效了,此时大量的查询请求落在数据库服务器上,造成数据库CPU和内存压力过大,甚至宕机解决方案:使用分布式锁或者分布式队列来限制数据库请求数量,这样可以一定程度上保护数据库服务器。但是加锁所导致吞吐量下降。使缓存的过期时间尽可能分散,比如...原创 2020-02-24 22:47:04 · 276 阅读 · 0 评论 -
Redis主从一致性(2.8版本前后的差别)
文章目录背景Redis2.8之前全量同步初次同步断线重连同步增量同步Redis2.8之前同步策略的缺点Redis2.8之后复制偏移量复制积压缓存区服务器运行ID背景在Redis中,用户可以执行slaveof指令,或者修改SLAVEOF设置,使得一个服务器B成为另一个服务器A的slave。那么服务器A叫做主服务器,服务器B叫做从服务器。在实际的工程中,主服务器一般只接受客户端的写请求,而从服务器...原创 2020-02-24 17:34:56 · 709 阅读 · 0 评论 -
Redis之PipeLine
文章目录背景性能对比适用场景注意事项背景Redis是使用请求/响应协议的TCP服务器,所以说通常的执行流程如下:客户端发送请求,同时监听对应的socket,等待服务端响应,一般是一个阻塞的状态服务端将结果发送给客户端,客户端获取到结果整个流程如图:由官方提供的数据来看,Redis每秒可以进行100000+次查询,但是这只是查询的性能,在实际操作中,还需要进行TCP报文的打包和发送...原创 2020-02-24 14:54:19 · 337 阅读 · 0 评论 -
Redis持久化-RDB与AOF
文章目录简介RDB触发时机手动触发savebgsave被动触发redis.conf参数优缺点AOF触发时机参数重写机制优缺点:简介Redis是一种内存数据库,也就是说,在进程期间,所有对数据库的读写操作都是基于内存来进行的。这样的机制在把Redis当作缓存的场景来说是没啥问题。但是更多的情况是,希望Redis中的数据能够持久化,也就是说下次重启时也可以访问到上次留下来的数据,于是Redis持久...原创 2020-02-23 23:50:33 · 222 阅读 · 0 评论 -
Redis实现异步队列
使用Redis实现任务队列首先想到的就应该是Redis的列表类型List,这是因为Redis中的列表类型是由双向链表实现的,符合队列的功能。实现其实很简单:非阻塞实现:生产者使用LPUSH 将任务加入队列,消费者使用RPOP将任务移除队列,一个先入先出的队列就实现了://生产者只需将数据LPUSH到队列中127.0.0.1:6379> LPUSH queue task(int...原创 2020-02-23 18:17:08 · 256 阅读 · 0 评论 -
Redis实现分布式锁
文章目录使用setnx expire del实现使用set实现如果大量key同时过期怎么办?分布式锁,是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,往往需要互斥来防止共享资源的并发访问,从而保证数据一致性。分布式锁需要具备的特性:互斥性:任意时刻都只有一个客户端获得锁,其他申请锁的客户端必须等待安全性:锁只能被持有的客户端删除,其他客户端不能删除避免死锁:获取锁的客户...原创 2020-02-23 16:37:24 · 148 阅读 · 0 评论