Redis / Cache
32 篇笔记
- 1.11 Redis压测historical
1. 压测Lua脚本 1. redis-cli加载Lua 2. redis-benchmark压测Lua 3. redis-benchmark压测pipeline 这个命令会把 evalsha d72ab028ab5ff319cf0979291745f98c099cecb2 1 test 10 5条
- 1.12 云Redishistorical
1. 腾讯云Redis 基于VIP+LoadBalancer+Proxy+原生Redis-Cluster - VIP+LoadBalancer:就是北极星注册中心的寻址+负载均衡+健康检查+就近路由的功能 此 VIP 绑定了集群内部的所有数据节点,并提供负载均衡功能,用户所有请求会平均分布到集群的各
- 2.1 Redis BloomFilterhistorical
1. Redis实现 - bit数组可以用redis的BitMaps实现 - 自动扩容可以使用一个cursor记录当前BitMaps的位置,达到饱和后再次创建一个同样大小的BitMaps。 - 如此get的逻辑就变成该元素是否在任意一个BitMaps中 - put的逻辑也是判断该元素不在任意一个Bi
- 2.2 Redis RateLimiterhistorical
1. 是什么 - 基于Redis实现的限流 2. 计数器算法 2.1. 接口 2.1.1. 访问次数加一 - 参数:key - 返回: - 当前访问次数 - 访问次数重置的剩余时长 2.1.2. 获取当前访问次数 - 参数:key - 返回: - 当前访问次数 - 访问次数重置的剩余时长 2.2.
- 2.3 Redis数据结构historical
1. Redis DB redisDb是Redis中表示Db的数据结构,里面包含了dict类型; dict是Redis中表示K、V的数据结构,里面包含了dictht类型; dictht是数组,数组中的每个元素是dictEntry;(即Redis用hash结构实现K、V) dictEntry的next
- 2.4 Redis异步队列historical
1. 什么是异步队列 - 队列:先进先出 - 异步:有缓存区 - 说白了就是带缓冲区的生产者/消费者模型 2. 如何实现异步队列 2.1. rpush+lpop+sleep 一般使用 list 结构作为队列,rpush 生产消息,lpop 消费消息。当 lpop 没有消息的时候,要适当 sleep
- 2.5 Redis分布式锁historical
1. Redis分布式锁是什么 基于Redis实现的分布式锁 2. Redis分布式锁实现 2.1. 单实例 2.1.1. 加锁 - 不存在的情况下set一个key - setnx用来保证原子性 - key用来保证互斥 - value用来保证加锁和解锁必须是同一客户端 - expx、time用来保证
- 2.6 Redis key 设计技巧historical
1. MySQL- Redis 1.1. 单表 - 主键列 set 表名:主键名 主键值 - 其他列 set 表名:主键名:主键值:列名 列值 1.1.1. 用户表 根据primary key查询record - MySQL 用户表: userid username password email -
- 2.7 Redis命令historical
1. Redis通用命令 - keys pattern 查询相应的key - 在redis里,允许模糊查询key,有3个通配符 , ? ,[] - : 通配任意多个字符 - ?: 通配单个字符 - []: 通配括号内的某1个字符 - redis-cli只能查出本节点的数据 - SCAN cursor
- 3.1 Redis线程模型historical
1. Redis的Reactor模型 - 由四部分组成:多个socket、IO多路复用、文件事件分派器、事件处理器。 - 其中文件事件分派器消费队列是单线程的,所以Redis才叫单线程模型 - redis server打开了一个server socket监听客户端链接,并把这个socket注册到IO