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