OpenIdea

Life is short, I write my code.

Redis [6]

Redis 的缓存应用

1、为什么需要缓存 一般在项目中,最消耗性能的地方就是后端服务的数据库了。而数据库的读写频率常常都是不均匀分布的,大多情况是读多写少,并且读操作还会有一些复杂的判断条件,比如 like、group、join 等等,这些语法是非常消耗性能的,所有会出现很多的慢查询,因此数据库很容易在读操作的环节遇到瓶颈。那么通过在数据库前面,前置一个缓存服务,就可以有效的吸收不均匀的请求,抵挡流量波峰。 ...

Redis [5]

分布式锁

分布式锁设计原则: 互斥性,同一时间只有一个线程持有锁 容错性,即使某一个持有锁的线程,异常退出,其他线程仍可获得锁 隔离性,线程只能解自己的锁,不能解其他线程的锁 1、基于单节点 Redis 的分布式锁 流程: 1. 获取锁 > set key-name random-value nx px 300 其中: - random-value 是由客户端生成的一个...

Redis [4]

过期策略以及内存淘汰机制和数据持久化

过期策略以及内存淘汰机制 1、过期策略 常用的过期策略: 定时删除:在设置键的过期时间的同时,创建一个定时器,让定时器在键的过期时间来临时,立即执行对键的删除操作。该方法对内存友好,对 CPU 不友好 惰性删除:放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过期,就返回该键。该方法对 CPU 友好,对内存不友好 定期...

Redis [3]

RedisObject 和数据结构

RedisObject RedisObject 的结构: typedef struct redisObject { //类型 unsigned type:4; // 编码 unsigned encoding:4; // 指向数据结构的指针 void *ptr; // 高 16 位用来记录访问时间,用于 LRU // 低...

Redis [2]

Redis 数据存储模型和内存统计

Redis 数据存储模型 dictEntry Redis 中的每个键值对都会有一个 dictEntry,存储指向 Key 和 Value 的指针,next 指向下一个 dictEntry。 redisObject Redis 中的 Value 都通过 RedisObject 来存储,type 指明了 Value 对象的类型,ptr 字段指向对象所在的地址。除此之外,还会包含对象编...

Redis [1]

Redis 特征和基本数据类型

Redis: Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, so...