
Redis
文章平均质量分 71
所为xy
这个作者很懒,什么都没留下…
展开
-
使用Redis作为异步队列的相关问题
如何使用Redis实现异步队列:rpush + blpop如何实现一次发布,多次消费:使用Pub/Sub机制,可以实现1:N的消费关系。Redis的Pub/Sub机制有什么缺点:新开启的订阅客户端,无法消费之前已经发布的消息;下线后再次上线的订阅客户端,也无法接收下线期间的消息。究其原因是没有对消息进行持久化。Redis如何实现延时队列:使用zset,拿时间戳作为score,消息内容作为key调用zadd来生产消息,消费者用zrangebyscore指令获取N秒之前.原创 2020-06-12 20:28:41 · 223 阅读 · 0 评论 -
Redis中的Bitmaps、HyperLogLog、GEO
一、Bitmaps:位图:用一个bit位的状态来表示某个数据的是否已经存在。基本操作:// offset:偏移量,从0开始 value:只能为0/1setbit key offset valuegetbit key offset// 获取当前位图数组中,指定下标范围内,值为1的个数bitcount key [start] [end]位运算操作:// 对多个位图做位运算。op取值:and,or,not,xor// 将将位运算的结果放在指定的destkey中bitop原创 2020-06-12 11:36:14 · 310 阅读 · 0 评论 -
Redis内存淘汰策略
1.volatile-lru:从已经设置过期时间的数据集中,挑选最近最少使用的数据淘汰。2.volatile-ttl:从已经设置过期时间的数据集中,挑选即将要过期的数据淘汰。3.volatile-random:从已经设置过期时间的数据集中,随机挑选数据淘汰。4.allkeys-lru:从所有的数据集中,挑选最近最少使用的数据淘汰。5.allkeys-random:从所有的数据集中,随机挑选数据淘汰。6.no-enviction:禁止淘汰数据。补充:Redis4.0后新增了LFU(l原创 2020-06-10 17:28:20 · 245 阅读 · 0 评论 -
Redis与Memcahed的区别
1. 持久化:Memcached数据完成保存在内存,Redis数据也是放在内存,但是它支持持久化,也就是说断电后,可以通过日志文件恢复数据。2. 数据类型:memcached只支持string,而redis支持数据类型较丰富,如string、list、set、sorted set、hash。3. 底层实现:底层实现不同。Memcached调用系统函数,会消耗比较多的时间去请求,redis自己构建了vm,速度会更快。4.支持的数据大小:Memcached最多只能存储1M大小,而Redis的key原创 2020-06-10 16:37:36 · 191 阅读 · 0 评论 -
Redis Cluster原理分析
一、数据分布:所谓数据分布就是将数据分散到各个Redis节点中去。Redis进行数据分布采用的是 一致性哈希+虚拟槽 的方式。关于一致性哈希,看程序员小灰:一致性哈希介绍。因为一致性哈希存在存储数据结点分布不均匀,从而导致数据也分布不均与的现象,并且这种现象在结点少的时候更容易出现。另外当数据结点较少时,改变其中的结点,带来的数据迁移量会越大。而一般的情况下,并不会有几百个结点的情况。所以Redis使用了虚拟槽(slot),虚拟槽就是把数据通过哈希函数映射到一个固定的整数范围内,这个范围一般远远大原创 2020-06-07 19:21:28 · 316 阅读 · 0 评论 -
Redis的Sentinel模式原理
Sentinel模式基本介绍一、Sentinel的三个定时任务:每隔10秒,每个Sentinel节点向每个主节点或者从节点发送 info命令,去获取最新的拓扑结构。这也是在配置Sentinel节点时,只配置了Sentinel监控的主节点,但是却可以获取到主节点的从节点的原因。每隔2秒,每个Sentinel节点向_sentinel_:hello频道发送对主节点的判断以及自身的信息。每个Sentinel节点都会订阅_sentinel_:hello频道,以此来了解其他Sentinel节点,同时交原创 2020-06-07 11:44:22 · 258 阅读 · 0 评论 -
Redis的Sentinel模式基本介绍
主从模式介绍主从模式存在的问题:一旦主节点宕机,从节点晋升为主节点,同时需要修改应用方的主节点地址,还需要命令所有从节点去复制新的主节点,整个过程需要人工干预。主节点的写能力受到单机的限制。主节点的存储能力受到单机的限制。针对主从模式存在的问题,提供了Sentinel模式:Sentinel的作用:监控:不断检查主服务器和从服务器是否正常运行。通知:当被监控的某个 Redis 服务器出现问题,Sentinel 通过 API 脚本向管理员或者其他应用程序发出通知。自动故障转移:当主节点不原创 2020-06-07 11:43:36 · 370 阅读 · 0 评论 -
Redis主从模式(二):实现原理(全量复制、部分复制)
Redis结点间的复制由从库主动发起。Redis2.8前由sync命令执行,sync命令只能支持全量复制,Redis2.8及其以后,使用psync命令执行,该命令即支持全量复制,有支持部分复制。对于主从间的复制,当从库第一次复制数据时,使用全量复制,后面过程当主库处理了写数据后,会将数据自动同步给从库(异步执行)。而部分复制的时机是在从库复制主库的数据时发生异常,带恢复后,发起的一次补救复制,由于这时只涉及部分数据,所以数据同步时间会较短。下面的主从复制原则分析,也是基于psync来说明的。一、asy原创 2020-06-06 19:49:50 · 584 阅读 · 0 评论 -
Redis主从模式(一):基本介绍与搭建
一、主从模式:主从模式主要解决2个问题:Redis单点故障:分布式环境下不允许出现单点,也即当某个结点挂了,得有替补接上。读写分离:Redis虽然是一个高性能的数据库,但单机总有瓶颈,所以增加从库来分担读压力。主库来接收写命令,各个从库分担大量的读请求。二、搭建主从:通过info replication 可以查看当前结点的身份信息,与当前结点的从库信息。建立主从关系是在从库上进行配置的:每个启动的Redis结点,默认是一个主库(master)。可以通过下面方式,让当前从库成为某个结点的从库原创 2020-06-06 14:44:33 · 291 阅读 · 0 评论 -
Redis三种持久化方式:RDB、AOF、Redis4.0后的混合模式
通俗讲持久化就是将内存中的数据写入非易失介质中,比如机械磁盘和SSD。在服务器发生宕机时,作为内存数据库Redis里的所有数据将会丢失,因此Redis提供了持久化两大利器:RDB和AOFRDB 将数据库快照以二进制的方式保存到磁盘中。AOF 以协议文本方式,将所有对数据库进行过写入的命令和参数记录到 AOF 文件,从而记录数据库状态。查看RDB配置[redis@abc]$ cat /abc/redis/conf/redis.confsave 900 1save 300 10save 60 1原创 2020-06-06 12:09:13 · 2115 阅读 · 0 评论 -
缓存雪崩、缓存击穿、缓存穿透发生的场景分析及解决
一、简单描述加缓存情形下,数据的读取:读取某个数据时,先看缓存中是否存在;存在则返回数据;不存在则从数据库中读取,然后放入缓存。二、缓存雪崩:缓存雪崩指的是:一大批缓存的数据在同一时间过期,这时去获取数据的话,就会去数据库中进行获取,而此时由于数据量很大,所以可能直接压垮数据库。举个例子: 我们对商品详情页进行缓存,每个商品id对应一个商品详情页的缓存,如果我们把每个商品对应的缓存过期时间设置一样。在高并发下,当缓存在同一时间失效时,都会去数据库查询数据,因为商详页设计的信息很多很多,并且在多个线程原创 2020-06-05 19:57:18 · 562 阅读 · 0 评论