![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
文章平均质量分 57
qq_33296156
这个作者很懒,什么都没留下…
展开
-
08----------懒惰删除
一直以来我们认为 Redis 是单线程的,单线程为 Redis 带来了代码的简洁性和丰富多样的数据结构。不过Redis内部实际上并不是只有一个主线程,它还有几个异步线程专门用来处理一些耗时的操作。Redis 为什么要懒惰删除(lazy free)?删除指令 del 会直接释放对象的内存,大部分情况下,这个指令非常快,没有明显延迟。不过如果删除的 key 是一个非常大的对象,比如一个包含了千...转载 2018-08-30 10:27:39 · 758 阅读 · 0 评论 -
07----------过期策略
Redis 所有的数据结构都可以设置过期时间,时间一到,就会自动删除。1.定期检查:edis 会将每个设置了过期时间的 key 放入到一个独立的字典中,以后会定时遍历这个字典来删除到期的 key2.惰性策略:在客户端访问这个 key 的时候,redis 对 key 的过期时间进行检查,如果过期了就立即删除定时删除是集中处理,惰性删除是零散处理。Redis 默认会每秒进行十次过期扫描...转载 2018-08-30 10:12:37 · 153 阅读 · 0 评论 -
06----------再谈分布式锁(使用Redlock算法)
分布式锁的原理,它的使用非常简单,一条指令就可以完成加锁操作。不过在集群环境下,这种方式是有缺陷的,它不是绝对安全的。比如在 Sentinel 集群中,主节点挂掉时,从节点会取而代之,客户端上却并没有明显感知。原先第一个客户端在主节点中申请成功了一把锁,但是这把锁还没有来得及同步到从节点,主节点突然挂掉了。然后从节点变成了主节点,这个新的节点内部没有这个锁,所以当另一个客户端过来请求加锁时,立...转载 2018-08-30 10:06:10 · 2513 阅读 · 0 评论 -
05----------PubSub 发布订阅(消息多播,但由于自己的缺点,并未被使用)
PubSub 缺点:PubSub 的生产者传递过来一个消息,Redis 会直接找到相应的消费者传递过去。如果一个消费者都没有,那么消息直接丢弃。如果开始有三个消费者,一个消费者突然挂掉了,生产者会继续发送消息,另外两个消费者可以持续收到消息。但是挂掉的消费者重新连上的时候,这断连期间生产者发送的消息,对于这个消费者来说就是彻底丢失了。 如果 Redis 停机重启,PubSub 的消息是不会持久...转载 2018-08-29 20:54:05 · 1665 阅读 · 0 评论 -
04----------redis事务
首先说明,redis事务只满足了隔离性,隔离性中的串行化——当前执行的事务有着不被其它事务打断的权利。1. 命令无法排队(外表错误;): 命令参数数量错误,或者命令不存在等,导致无法排队。2.6.5 之前版本会导致其余有效命令正常执行,2.6.5之后的版本一旦遇到无法排队错误,会拒绝执行整个事务的所有语句;2. 调用Esec后发现的错误(执行期间错误): 一般由于对错误的Key或Val执行...原创 2018-08-29 20:37:41 · 136 阅读 · 0 评论 -
03---------- Redis常见性能问题和解决方案:
Redis常见性能问题和解决方案:(1) Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件;(Master写内存快照,save命令调度rdbSave函数,会阻塞主线程的工作,当快照比较大时对性能影响是非常大的,会间断性暂停服务,所以Master最好不要写内存快照;AOF文件过大会影响Master重启的恢复速度)(2) 如果数据比较重要,某个Slave开启...原创 2018-08-29 20:12:54 · 694 阅读 · 0 评论 -
02----------为什么说redis是单线程
1.首先说明并发和并行的区别:通俗点说 并发就是不同线程同时干一件事情并行就是不同线程同时干不同的事情2.Redis不存在线程安全问题? Redis采用了线程封闭的方式,把任务封闭在一个线程,自然避免了线程安全问题,不过对于需要依赖多个redis操作的复合操作来说,依然需要锁,而且有可能是分布式锁单线程指的是网络请求模块使用了一个线程(所以不需考虑并发安全性),即一个线程处理所有...转载 2018-08-29 20:12:28 · 137 阅读 · 0 评论 -
01----------Redis分布式锁的正确实现方式(Java版)
前言分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正确地实现Redis分布式锁。可靠性首先,为了确保分布式锁可用,我们至少要确...转载 2018-08-29 14:55:21 · 73 阅读 · 0 评论 -
数据结构与对象---------01字符串
再Redis中,字符串是由SDS实现的例如:redis>SET msg "hello world"OK那么Redis将再数据库中创建一个新的键值对,其中:键值对的键是一个字符串的对象,底层实现的保存着字符串“msg”的SDS键值对的值也是一个字符串对象,底层实现的保存着字符串“hello world”的SDSSDN的定义:对比C字符串,SDS具有以下优点:...转载 2018-08-30 11:50:27 · 116 阅读 · 0 评论