
Redis
文章平均质量分 79
水墨之白
悟已往之不谏,知来者之可追!
展开
-
缓存穿透、击穿、数据一致性解决方案
一、缓存雪崩 大量的key设置了相同的过期时间,导致在缓存在同一时刻全部失效,造成瞬时DB请求量大、压力骤增,引起雪崩。 解决方案: 1.缓存时间设置随机值,尽量让失效时间点均匀分布 2.在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量 3.做二级缓存,或者双缓存策略。A1为原始缓存,A2为拷贝缓存,A1失效时,可以访问A2,A1缓存失效时间设置为短期,A2设置为长期 4.Redis可...原创 2019-04-08 14:18:04 · 762 阅读 · 0 评论 -
Redis事务与Pipeline功能
一、Redis事务 Redis中的事务(transaction)是一组命令的集合,对事物的支持有限,不能保证原子性,在集群分片环境中,由于不同key可能存在不同的机器上,所以造成事务无法使用(可以简单使用,不推荐) 事务相关命令 multi命令,用于开启事务,标记一个事务块的开始,事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 exec命令原子性(atomic)地执行 exec命令,...原创 2019-11-21 20:18:20 · 1992 阅读 · 0 评论 -
Redis实现分布式锁
什么是分布式锁? 在分布式环境下,系统被拆分,代码可能会被不同的jvm运行,在单进程的情况下,我们可以使用java语言和本身的类库提供的锁,完成高并发的需求。 常见的分布式锁: Memcached分布式锁 redis分布式锁 Zookeeper分布式锁 Chubby 底层使用了Paxos一致性算法 redis如何实现分布式锁? 三要素: 1.加锁 sentnx命令 setnx...原创 2018-07-18 00:36:00 · 752 阅读 · 0 评论 -
重要Redis命令
String >set a 1 "OK" >get a "1" >del a "1" >get a null LIST //向list放入元素 >rpush list-key item "1" >rpush list-key item1 "2" >rpush list-key item2 "3原创 2018-12-27 15:34:27 · 314 阅读 · 0 评论 -
Redis数据结构
redisObject Redis存储的数据都使用redisObject来封装,包括string,hash,list,set,zset在内的所有数据类型。 简单来说,就是将key-value封装成对象,key是一个对象,value也是一个对象 typedef struct redisObject{ // 对象的类型 unsigned type 4:; // 对象的编码格式...原创 2019-08-07 17:40:28 · 166 阅读 · 0 评论 -
Redis事件驱动模型
一、多路复用 多路”指的是多个网络连接,“复用”指的是复用同一个线程 多路I/O复用模型是利用 select、poll、epoll 可以同时监察多个流的 I/O 事件的能力,在空闲的时候,会把当前线程阻塞掉,当有一个或多个流有 I/O 事件时,就从阻塞态中唤醒,于是程序就会轮询一遍所有的流(epoll 是只轮询那些真正发出了事件的流),并且只依次顺序的处理就绪的流,这种做法就避免了大量的无用...原创 2019-08-18 10:11:14 · 294 阅读 · 0 评论 -
Redis过期策略及内存淘汰
一、设置key过期 EXPIREAT或PEXPIREAT命令 以秒或者毫秒精度为数据库中的某个键设置生存时间,当key过期,何时删除该key释放内存 二、Redis是如何判断一个键过期 redis中维护了一个expires字典,里面保存了数据库中所有设置了过期时间的键的过期时间,称为过期字典。 使用ttl(time to live)命令可以查询key的生存秒数 当前时间和过期时间比较,大于则过期...原创 2019-06-24 11:22:52 · 167 阅读 · 0 评论 -
Redis持久化详解
RDB:快照形式是直接把内存中的数据保存到一个 dump 文件中,恢复时是将快照文件直接读到内存里。 AOF:把所有的对Redis的服务器进行修改的命令都存到一个文件里,命令的集合。 Redis默认是快照RDB的持久化方式 RDB RDB 有两种触发方式,分别是自动触发和手动触发 自动触发 在 redis.conf 配置文件中的 SNAPSHOTTING 下,加上如下配置: save 90...原创 2019-08-09 09:36:24 · 267 阅读 · 0 评论 -
Redis主从架构,Sentinel机制和Cluster分片原理
一、Redis主从复制 单台Redis缺点: 不能满足高可用,宕机数据丢失 支持的并发量有限 自身内存有限 主从架构 读写分离(主服务器负责写,从服务器负责读) 通过执行SALVEOF命令或者设置salveof选项,让一个服务器去复制(replicate)另一个服务器,被复制的服务器称为master,复制数据发服务器称为slave 复制的两个重要操作 1. 同步 将从服务器的数据库状态更新...原创 2019-05-17 15:16:41 · 1113 阅读 · 0 评论