Redis
2021-12-14 10:08:23 18 举报
AI智能生成
Redis
作者其他创作
大纲/内容
基础篇
linux安装Redis(单机)
基本命令
Redis基本数据类型
String
存储字符串,整数,浮点数
操作命令
get、set、mset、mget
setnx 如果key不存在则设置key,返回1 否则什么都不做,返回0
set key value [expiration EX seconds|PX milliseconds][NX|XX] 如set lock1 1 EX 10 NX
incr、incrby、decr、decrby、incrbyfloat
strlen、append
存储原理
redisObject
SDS
应用场景
缓存 热点数据缓存
分布式数据共享 如:分布式session
分布式锁 基于setnx命令实现
全局ID 基于incrby命令实现
计数器 基于incr命令实现
限流 基于incr命令实现
位统计
Hash
存储类型
value只能是字符串(字符串、整数、浮点数)
操作命令
hget、hset、hmget、hmset
存储原理
ziplist
hashtable
应用场景
String的应用场景、Hash都可以做
购物车
List
存储类型
有序的字符串、可重复
操作命令
lpush、rpush、lpop、rpop
blpop 带阻塞
lindex queue 0
lrange queue 0 -1
lrange queue 0 -1
存储原理
quicklist
应用场景
用户消息时间线
消息队列
Set
存储类型
无序集合 最大40亿左右
操作命令
sadd、smembers myset、scard myset、spop、sismember
存储原理
intset或hashtable
应用场景
抽奖
点赞、签到、打卡
商品标签
商品筛选
sdiff(差集)、sinter(交集)、sunion(并集)
用户关注模型
ZSet
存储类型
有序set 每个元素都有score
操作命令
zadd myzset 10
zrange myzset 0 -1 withscores 获取全部元素
zrangebyscore myzset 20 30 根据分值区间获取元素
zrem myzset php cpp 移除元素
zcard myzset 统计元素个数
zincrby myzset 5 python 分值递增
zcount myzset 20 60 根据分值统计个数
zsocre myzset java 获取元素 score
存储原理
ziplist
skiplist+dict
应用场景
排行榜
其他数据类型
BitMaps
Hyperloglogs
Streams
原理篇
发布订阅模式
订阅频道
按规则订阅频道
Redis事务
为什么要用事务
事务用法
multi(开启事务)
exec(执行事务)
discard(取消事务)
watch(监视)
watch命令
CAS乐观锁
事务可能遇到的问题
在执行exec之前发生错误
在执行exec之后发生错误
lua脚本
在Redis中调用lua脚本
redis> eval lua-script key-num [key1 key2 key3 ....] [value1 value2 value3 ....]
在lua脚本中调用redis命令
redis> eval "redis.call('set',KEYS[1],ARGV[1])" 1 lua-key lua-value
案例:对IP进行限流
缓存lua脚本
lua脚本超时
Redis为什么这么快
纯内存 k/v
单线程
多路复用技术
内存回收
过期策略
定时过期(主动淘汰)
惰性过期(被动淘汰)
定时过期
淘汰策略
noeviction(默认)
volatile-ttl
allkeys-random
volatile-random
allkeys-lfu
volatile-lfu
allkeys-lru LRU算法
volatile-lru LRU算法
LRU淘汰原理
LFU淘汰原理
持久化机制
RDB
自动触发
配置文件
shutdown
flushall
手动触发
save
bgsave
优势
劣势
AOF
配置文件
AOF重写机制
优势
劣势
两种方案对比
分布式篇
为什么要集群
性能
扩展
可用性
Redis主从复制
环境搭建
主从复制原理
主从复制不足
sentinel
sentinel环境搭建
sentinel使用
sentinel原理
sentinel不足
分布式解决方案
Sharding
代理proxy
Redis Cluster
实战篇
Redis客户端
Jedis
Jedis Pool
Sentinel获取连接原理
Cluster获取连接原理
Luttece
Redisson
本质
特点
实现分布式锁
数据一致性
缓存使用场景
一致性问题定义
方案选择
高并发问题
热点数据发现
缓存雪崩
什么是缓存雪崩
缓存雪崩解决方案
缓存穿透
什么是缓存穿透
经典面试题
哈希碰撞
布隆过滤器原理
Guava实现
布隆过滤器在项目中使用
0 条评论
下一页