缓存
Idea King
勤练带来力量
展开
-
聊一聊 Redis Cluster的实现
文章目录1.Redis集群介绍2.Redis 集群的数据分片3.Redis 集群的主从复制模型4.Redis 一致性保证Redis Cluster 如何故障转移?Redis Cluster 如何重新分片?Redis 集群的目标实现子集在Redis Cluster 协议中的客户端和服务端安全写入可用性性能为什么要避免使用合并操作Redis Cluster中的主要概念键分布模型(key distributed model)键哈希标签(Keys hash tags)集群节点属性集群拓扑(Cluster topol原创 2020-11-23 00:44:19 · 202 阅读 · 0 评论 -
Redis相关的一些问题
文章目录1. 缓存穿透2. 缓存雪崩3. 缓存击穿4. 缓存并发竞争(并发set)5. 如果master还未将AOF同步给slave就挂了,此时failover将此slave提升为新的master,那么如何保证最终一致性? 1. 缓存穿透 在高并发下,查询一个不存在的值时,缓存不会被命中,导致大量请求直接落到数据库上,如活动系统里面查询一个不存在的活动。 解决方案: 布隆过滤器。首先也是对所有可能查询的参数以hash形式存储,当用户想要查询的时候,使用布隆过滤器发现不在集合中,就直接丢弃,不再对持久层查询转载 2020-07-01 18:05:03 · 119 阅读 · 0 评论 -
初识 将Redis作为LRU缓存
文章目录1. Maxmemory配置2. 淘汰策略3. 淘汰策略如何工作4. 近似LRU算法5. LFU模式6. 参考文献 当 Redis用作缓存时,通常很容易在添加新数据的同时移除旧数据。 此行为在开发者社区中是众所周知的,因为它是memcached system 的默认行为。 LRU(Least Recently Used,最近最少使用),将最近最少使用的数据删除掉。 从 Redis 4.0 开始引入了LFU(Least Frequntly Used,最不常用)淘汰策略。 1. Maxmemory配置原创 2020-06-29 20:00:21 · 208 阅读 · 0 评论 -
初识 Redis pipelining
使用Redis pipelining可以加速Redis查询 1. 请求/响应协议和RTT Redis是一个使用client-server模型和请求/响应协议的TCP服务器。 过程如下: client 发送一个请求给server,通常以阻塞的方式从套接字中读取server的响应。 server 处理命令并将响应发送回client。 Client: INCR X Server: 1 Client: INCR X Server: 2 Client: INCR X Server: 3 Client: INCR原创 2020-06-29 18:09:40 · 341 阅读 · 0 评论 -
通过FAQ简单了解Redis
文章目录1. Redis与其他的键值对存储有什么不同?2. Redis的内存占用量是多少?3. 我无法拥有比内存更大的数据集。 有什么计划改变这一点吗?4. 将Redis与持久化数据库一起使用是一个好主意吗?5. 有什么办法可以降低Redis的内存使用量?6. 如果Redis内存不足,会发生什么?7. Redis磁盘快照是原子操作吗?8. Redis是单线程的。 如何利用多个CPU /内核?9. 一个Redis实例可以容纳的最大密钥数是多少? 哈希,列表,集合,排序集合中元素的最大数量是多少?10. 为什么原创 2020-06-29 14:40:14 · 225 阅读 · 1 评论 -
Redis 实现分布式锁
文章目录1. 前言2. 实现3. 安全和活动保障为什么基于故障转移的实现还不够单个实例的正确实现Redlock算法 1. 前言 在许多情形中,不同的进程必须以 互斥 的方式对共享资源进行操作时,这时候分布式锁就非常有用了。 本页面试图提供一种更规范的算法来实现Redis的分布式锁。 我们提出了一种称为Redlock的算法,该算法实现了DLM(分布式锁管理器),我们相信它比普通的单实例方法更安全。 我们希望社区能够对其进行分析,提供反馈,并将其用作实现或更复杂或替代设计的起点。 2. 实现 下面列出已经有的实原创 2020-06-28 16:50:36 · 187 阅读 · 0 评论 -
初识 Redis 数据分区
文章目录1. 前言1.1 什么是分区?1.2 为什么要用分区?2. 分区基础知识2.1 分区的不同实现2.2 分区的缺点2.3 数据存储还是缓存?2.4 预分片(presharding)3. Redis 分区的实现3.1 Redis 集群3.2 Twemproxy3.3 支持一致哈希的客户端4. 参考文献 分区:如何在多个 Redis 实例之间拆分数据。 1. 前言 1.1 什么是分区? 分区是将数据拆分给多个 Redis 实例的过程,因此每个实例将只包含键的一个子集。 本文档的第一部分将向您介绍分区的概念原创 2020-06-27 21:32:58 · 206 阅读 · 0 评论 -
初识Redis lua脚本
文章目录Lua脚本Lua和Redis数据类型之间的转换Lua脚本的原子性错误处理带宽和EVALSHA脚本命令参看文献 Lua脚本 Lua是一个高效的轻量级脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。 Lua 脚本功能是 Reids 2.6 版本的最大亮点, 通过内嵌对Lua环境的支持, Redis 解决了长久以来不能高效地处理 CAS (check-and-set) 命令的缺点, 并且可以通过组合使用多个命令, 轻松实现以前很难实现原创 2020-06-27 15:21:05 · 235 阅读 · 0 评论 -
Redis事务
目录1. 用法2. 事务中的错误3. 为什么Redis不支持回滚?4. 丢弃事务队列5. 使用 check-and-set 实现乐观锁6. WATCH的原理是啥?7. 使用 WATCH 实现 ZPOP命令8. Redis脚本和事务参考文献 相关命令: DISCARD: 清空事务队列 EXEC:顺序执行事务队列中的所有命令 MULTI:进入事务 WATCH:监控某/某些键 UNWATCH:解决某/某些/所有键的监控 MULTI, EXEC, DISCARD 和 WATCH是Redis事务的基础。它允许我们一步原创 2020-06-27 14:10:59 · 134 阅读 · 0 评论 -
Redis 的发布/订阅(pub/sub)模式
文章目录原创 2020-06-27 00:38:01 · 539 阅读 · 0 评论 -
Redis简单了解
文章目录1. redis简介2. 安装redis3. 使用redis4. 总结5. 参考文件 1. redis简介 2. 安装redis 3. 使用redis 4. 总结 5. 参考文件 [1]原创 2020-06-26 23:32:19 · 682 阅读 · 0 评论