摘要:NO: Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of
阅读全文
摘要:NO: Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of
阅读全文
摘要:一、流对象 ### 流对象 ~~~ stream主要由:消息、生产者、消费者和消费组构成。 ~~~ Redis Stream的底层主要使用了listpack(紧凑列表)和Rax树(基数树)。 ### listpack ~~~ listpack表示一个字符串列表的序列化,listpack可用于存储字符
阅读全文
摘要:一、RedisObject结构10种encoding ### 10种encoding ~~~ encoding 表示对象的内部编码,占 4 位。 ~~~ Redis通过 encoding 属性为对象设置不同的编码 ~~~ 对于少的和小的数据,Redis采用小的和压缩的存储方式,体现Redis的灵活性
阅读全文
摘要:一、压缩列表 ### 压缩列表 ~~~ 压缩列表(ziplist)是由一系列特殊编码的连续内存块组成的顺序型数据结构 ### 节省内存 ~~~ 是一个字节数组,可以包含多个节点(entry)。每个节点可以保存一个字节数组或一个整数。 ### 压缩列表的数据结构如下: ~~~ zlbytes:压缩列表
阅读全文
摘要:一、字典(重点+难点) ### 字典(重点+难点) ~~~ 字典dict又称散列表(hash),是用来存储键值对的一种数据结构。 ~~~ Redis整个数据库是用字典来存储的。(K-V结构) ~~~ 对Redis进行CURD操作其实就是对字典中的数据进行CURD操作。 ### 数组 ~~~ 数组:用
阅读全文
摘要:一、RedisObject结构7种type ### 字符串对象 ~~~ C语言: 字符数组 "\0" ~~~ Redis 使用了 SDS(Simple Dynamic String)。用于存储字符串和整型数据。 ### buf[] 的长度=len+free+1 struct sdshdr{ //记录
阅读全文
摘要:一、RedisObject结构 ### RedisObject结构 ~~~ Value是一个对象 ~~~ 包含字符串对象,列表对象,哈希对象,集合对象和有序集合对象 ### 结构信息概览 typedef struct redisObject { unsigned type:4; # 类型 五种对象类
阅读全文
摘要:一、RedisDB结构:底层数据结构 ### Redis作为Key-Value存储系统,数据结构如下: ~~~ Redis没有表的概念,Redis实例所对应的db以编号区分,db本身就是key的命名空间。 ~~~ 比如:user:1000作为key值,表示在user这个命名空间下id为1000的元素
阅读全文
摘要:一、分布式锁特性 ### 互斥性 ~~~ 任意时刻,只能有一个客户端获取锁,不能同时有两个客户端获取到锁。 ~~~ Redis : setnx set key value NX 如果key存在就不设置 ### 同一性 ~~~ 锁只能被持有该锁的客户端删除,不能由其它客户端删除。 ~~~ Redis
阅读全文
摘要:NO: Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of
阅读全文
摘要:一、setnx ### 实现原理 ~~~ 共享资源互斥 ~~~ 共享资源串行化 ~~~ # 单应用中使用锁:(单进程多线程) ~~~ synchronized、ReentrantLock ~~~ # 分布式应用中使用锁:(多进程多线程) ~~~ 分布式锁是控制分布式系统之间同步访问共享资源的一种方式
阅读全文
摘要:一、Redisson分布式锁的使用/及实现原理 ### Redisson分布式锁的使用 ~~~ Redisson是架设在Redis基础上的一个Java驻内存数据网格(In-Memory Data Grid)。 ~~~ Redisson在基于NIO的Netty框架上,生产环境使用分布式锁。 ### 加
阅读全文
摘要:一、分布式锁/watch/setnx:watch ### [Redis经典问题解析] ~~~ [Redis乐观锁] ~~~ [Redis分布式锁] ~~~ [Redisson] ~~~ [Redis分布式锁watch/setnx] ~~~ [Redisson分布式锁的使用/实现原理] ~~~ [分布
阅读全文
摘要:一、并发hotkey/bigkey ### 数据并发竞争 ~~~ 这里的并发指的是多个redis的client同时set 同一个key引起的并发问题。 ~~~ 多客户端(Jedis)同时并发写一个key,一个key的值是1,本来按顺序修改为2,3,4, ~~~ 最后是4,但是顺序变成了4,3,2,最
阅读全文
摘要:一、Redis经典问题解析:穿透雪崩击穿 ### 缓存穿透 ~~~ 一般的缓存系统都是按照key去缓存查询如果不存在对应的value就应该去后端系统查找(比如DB)。 ~~~ 缓存穿透是指在高并发下查询key不存在的数据,会穿过缓存查询数据库。导致数据库压力过大而宕机 ### 解决方案: ~~~ 对
阅读全文
摘要:一、数据不一致 ### 数据不一致 ~~~ 缓存和DB的数据不一致的根源 : 数据源不一样 ### 如何解决 ~~~ 强一致性很难,追求最终一致性(时间) ~~~ 互联网业务数据处理的特点 ~~~ 高吞吐量 ~~~ 低延迟 ~~~ 数据敏感性低于金融业 ~~~ 时序控制是否可行? ~~~ 先更新数据
阅读全文
摘要:一、Redis集群缩容:缩容 ### 将7008实例剔除集群: [root@hadoop ~]# cd /opt/yanqi/servers/redis-cluster/7008/bin/ [root@hadoop bin]# ./redis-cli --cluster del-node 192.1
阅读全文
摘要:一、Redis集群容灾:容灾(failover) ### 故障检测 ~~~ 集群中的每个节点都会定期地(每秒)向集群中的其他节点发送PING消息 ~~~ 如果在一定时间内(cluster-node-timeout),发送ping的节点A没有收到某节点B的pong回应, ~~~ 则A将B标识为pfai
阅读全文
摘要:NO: Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of
阅读全文