
Redis
redis
qq_34709713
这个作者很懒,什么都没留下…
展开
-
适合各种统计的数据类型
原创 2020-11-11 10:13:56 · 492 阅读 · 0 评论 -
哨兵机制
哨兵其实就是一个运行在特殊模式下的 Redis 进程,主从库实例运行的同时,它也在运行。哨兵主要负责的就是三个任务:监控、选主(选择主库)和通知。在监控和选主这两个任务中,哨兵需要做出两个决策:在监控任务中,哨兵需要判断主库是否处于下线状态;在选主任务中,哨兵也要决定选择哪个从库实例作为主库。哨兵进程会使用 PING 命令检测它自己和主、从库的网络连接情况,用来判断实例的状态。如果哨兵发现主库或从库对 PING 命令的响应超时了,那么,哨兵就会先把它标记为“主观下线”。哨兵机制也是类似的,它原创 2020-11-09 21:05:32 · 419 阅读 · 0 评论 -
Redis持久化
1. 为什么需要持久化?因为Redis是内存数据库,它将自己的数据存储在内存里面,一旦Redis服务器进程退出或者运行Redis服务器的计算机停机,Redis服务器中的数据就会丢失。为了避免数据丢失,所以Redis提供了持久化机制,将存储在内存中的数据保存到磁盘中,用于在Redis服务器进程退出或者运行Redis服务器的计算机停机导致数据丢失时,快速的恢复之前Redis存储在内存中的数据。Redis提供了2种持久化方式,分别为:RDB持久化AOF持久化接下来,我们一一详解。2. RDB持久化转载 2020-06-08 14:46:31 · 130 阅读 · 0 评论 -
Redis跳表
在前面说Redis的文章里,提到了Redis的有序集合zset底层是依赖跳表实现的,当时没有展开讨论,内心认为还是需要一个专门的篇幅来介绍它。 先想一想为什么有序集合需要用跳表实现?回忆一下有序集合的几个关键词:是SortedSet和HashMap的结合;value具有唯一性;多了一个score;支持范围查询,结构如下:下面我决定针对zset的功能分析对应的造就这种功能所需的底层结构。功能一:zset支持快速插入和删除对应的解决思路:针对快速插入和删除,有没有想到什么?首选肯定是链表,所以,底转载 2020-05-23 22:52:29 · 160 阅读 · 0 评论 -
Redis基础
一、数据结构二、单线程架构Redis内部使用单线程架构。Redis一个瞬间只能执行一条命令,不能执行两条命令三、 Redis单线程为什么这么快1.纯内存Redis把所有的数据都保存在内存中,而内存的响应速度是非常快的2.非阻塞IORedis使用epoll异步非阻塞模型Redis自身实现了事件处理3.避免线程切换和竞态消耗在使用多线程编程中,线程之间的切换也会消耗一部分CPU资源,如果不合理的实现多线程编程,可能比单线程还要慢四、字符串类型五、哈希类型六、列表七、集合转载 2020-05-19 22:44:10 · 106 阅读 · 0 评论 -
Redis缓存
一、缓存穿透1、概念缓存穿透的概念很简单,用户想要查询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库查询。发现也没有,于是本次查询失败。当用户很多的时候,缓存都没有命中,于是都去请求了持久层数据库。这会给持久层数据库造成很大的压力,这时候就相当于出现了缓存穿透。这里需要注意和缓存击穿的区别,缓存击穿,是指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个屏障上凿开了一个洞。转载 2020-05-14 14:03:45 · 152 阅读 · 0 评论