2.使用
Redis / Cache · 7 篇笔记
- 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