随笔分类 - redis
摘要:写在最前面 在大型互联网应用当中如果你的应用引入了缓存机制,那么有一个大前提就是你的业务场景上必须得接受数据的新鲜度上有可能会有一定时间的延迟。 删除缓存失败是一个极小概率事件,且在不能保证所有操作100%成功的几率下,采用JOB补偿的机制是目前比较成熟的解决方案。 大并发量写请求的应用,不可能去实
阅读全文
摘要:几种 I/O 模型 为什么 Redis 中要使用 I/O 多路复用这种技术呢? 首先,Redis 是跑在单线程中的,所有的操作都是按照顺序线性执行的,但是由于读写操作等待用户输入或输出都是阻塞的,所以 I/O 操作在一般情况下往往不能直接返回, 这会导致某一文件的 I/O 阻塞导致整个进程无法对其它
阅读全文
摘要:我们知道Redis是支持事务的,但是它里面的事务为什么不支持回滚呢? 1.在Redis中,命令只会因为错误的语法而失败,或者是命令用在了错误类型的键上面; 也就是说,从实用的角度说,失败的命令是由编译错误造成的,而这些错误应该在开发过程中被发现,而不应该出现在生产环境中。 2.因为不需要对回滚进行支
阅读全文
摘要:这篇文章我想和你聊一聊,关于 Redis 分布式锁的「安全性」问题。 例如下面这些问题,你能清晰地回答上来吗? 基于 Redis 如何实现一个分布式锁? Redis 分布式锁真的安全吗? Redis 的 Redlock 有什么问题?一定安全吗? 业界争论 Redlock,到底在争论什么?哪种观点是对
阅读全文
摘要:我们天天都在使用 Redis 内置的命令行工具 redis-cli,久而久之以为它就是一个简单的交互式 Redis 数据结构手工操作程序,但是它背后强大的功能绝大多数同学可能闻所未闻。本节我们一起来挖掘这些鲜为人知的有趣用法。 目录: 执行单条命令批量执行命令set 多行字符串重复执行指令导出 cs
阅读全文
摘要:一、分布式锁 分布式锁,是一种思想,它的实现方式有很多。比如,我们将沙滩当做分布式锁的组件,那么它看起来应该是这样的: 加锁 在沙滩上踩一脚,留下自己的脚印,就对应了加锁操作。其他进程或者线程,看到沙滩上已经有脚印,证明锁已被别人持有,则等待。 解锁 把脚印从沙滩上抹去,就是解锁的过程。 锁超时 为
阅读全文
摘要:在多线程环境下,由于上下文的切换,数据可能出现不一致的情况或者数据被污染,我们需要保证数据安全,所以想到了加锁。 所谓的加锁机制呢,就是当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问,直到该线程读取完,其他线程才可使用。 还记得我之前说过Redis在分布式的情况下,需要对存在并发竞争
阅读全文
摘要:String在Redis底层是怎么存储的?这些数据类型在Redis中是怎么存放的?Redis快的原因就只有单线程和基于内存么? Redis是C语言开发的,C语言自己就有字符类型,但是Redis却没直接采用C语言的字符串类型,而是自己构建了动态字符串(SDS)的抽象类型。 就好比这样的一个命令,其实我
阅读全文
摘要:Redis雪崩了解么? 目前电商首页以及热点数据都会去做缓存 ,一般缓存都是定时任务去刷新,或者是查不到之后去更新的,定时任务刷新就有一个问题。 举个简单的例子:如果所有首页的Key失效时间都是12小时,中午12点刷新的,我零点有个秒杀活动大量用户涌入,假设当时每秒 6000 个请求,本来缓存在可以
阅读全文
摘要:为啥Redis那么快? 首先看下关系数据库和Redis本质上的区别。 从图中可以看出,关系数据库涉及到硬盘操作,而Redis直接是内存操作。 Redis采用的是基于内存的采用的是单进程单线程模型的 KV 数据库,由C语言编写,官方提供的数据是可以达到100000+的QPS(每秒内查询次数)。 完全基
阅读全文
摘要:为啥用Redis 因为传统的关系型数据库如Mysql已经不能适用所有的场景了,比如秒杀的库存扣减,APP首页的访问流量高峰等等, 都很容易把数据库打崩,所以引入了缓存中间件,目 前市面上比较常用的缓存中间件有Redis和Memcached不过中和考虑了他们的优缺点,最后选择了Redis。 Redis
阅读全文
摘要:缓存雪崩 缓存穿透 如何解决 Redis 的并发竞争 Key 问题 如何保证缓存与数据库双写时的数据一致性? Redis集群方案应该怎么做?都有哪些方案? Redis集群方案什么情况下会导致整个集群不可用? Redis有哪些适合的场景? Redis支持的Java客户端都有哪些?官方推荐用哪个? 说说
阅读全文
摘要:1.什么是Redis 2.为什么要用Redis 3.为什么要用Redis而不是map/guava 4.Redis场景数据结构以及使用场景分析 5.Redis设置过期时间 6.Redis内存淘汰机制 7.Redis持久化机制 8.Redis事务 1.什么是Redis? Remote Dictionar
阅读全文
摘要:Redis数据备份与恢复 Redis安全 Redis性能测试 Redis管道技术 Redis分区 Redis 数据备份与恢复 备份数据 Redis SAVE 命令用于创建当前数据库的备份。 redis Save 命令基本语法如下: redis 127.0.0.1:6379> SAVE 该命令将在 r
阅读全文
摘要:Redis 发布订阅 (pub/sub) Redis 事务 Redis 脚本 Redis连接 Redis服务器 Redis GEO Redis Stream Redis 发布订阅 Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息
阅读全文
摘要:Redis是一种可基于内存、分布式,可选持久化的键值对存储数据库,提供了多种语言API。 其值value可以是字符串(String), 哈希(Hash),列表(list),集合(set)和有序集合等类型。 Redis的特点: Redis支持数据持久化,可将内存中的数据保存在磁盘中,重启的时候再加载使
阅读全文