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