Redis 简述
概念
含义
Redis 是什么 ?
- 是什么
内存中的数据结构存储系统
- 作用
数据库、缓存和消息中间件
- 数据结构
- 字符串(strings)
- 列表(lists)
- 集合(sets)
- 有序集合(sorted sets)
- 散列(hashes)
-
bitmaps
-
hyperloglogs
-
geospatial
- 内置
- 复制(replication)
- LUA脚本(Lua scripting)
- LRU驱动事件(LRU eviction)
- 事务(transactions)
- 不同级别的 磁盘持久化(persistence)
- 高可用性(high availability)
- Redis哨兵(Sentinel)
- 自动 分区(Cluster)
特点
数据在内存中,读写速度非常快,支持并发 10W QPS
单进程单线程线程安全、协议简单、采用 IO 多路复用机制。(Redis6+ 已经支持 多线程)
- 内存数据库
- 缓存
- 消息中间件
数据结构
- String (字符串)
- Hash(散列)
- List(列表)
- Set(集合)
- ZSet(有序集合)
- Bitmap(位图)
- HyperLogLog (超级日志)
- Geospatial (地理空间)
2的32次方减一
512M
Redis协议规范(RESP)
高级特性
- 复制
- lua 脚本
- LRU驱动事件
- 事务
- 不同级别的磁盘持久化
- 哨兵机制 (Sentinel)
- 集群模式 (Cluster)
相关原理
管道
在分布式环境下,Redis 的性能瓶颈主要体现在网络延迟上,
而管道技术能减少客户端与服务器端的交互次数。
REDIS 事务
集群复制原理
持久化
- RDB
- AOF
集群模式及工作原理
- 主从模式
一主多从,且具有层次结构
- 哨兵模式
在主从模式基础上,增加哨兵机制,当主出现故障宕机时,可以选择一个从切换为主,
并通过发布与订阅的模式通知其他从服务器,完成主备热切
- 集群模式
- 数据分片和数据复制
- 节点之间 PING-PONG 机制互联
- 超过半数节点检测到某节点Fail,则将该节点设置为Fail状态
- 客户端直连任意节点,即可对集群进行操作
- Redis Cluster 把所有物理节点映射到 0 ~ 16383 的 slot(槽)上,进对key 做 hash 对16384其余数,分配到不同的节点上
版本选择
- 奇数是开发版本
- 偶数是稳定版本
redis管理
redis-cli
# 登录
redis-cli -h hostname -p port -a password
# 测试
> ping
# 选择库号
> select N
# 库大小
> dbsize
# N次运行同一命令
> 5 incr numA
Redis配置
redis.conf
# 通过命令行传参
--
# 运行时配置更改
config set
config get
# 配置Redis成为一个缓存
maxmemory 2mb
maxmemory-policy allkeys-lru
其他
Redis-Cli:学习怎么通过命令行使用redis。
配置(Configuration):怎么配置 redis。
复制(Replication):你需要知道怎么设置主从复制。
持久化(Persistence):了解如何配置redis的持久化。
Redis 管理(Redis Administration):学习redis管理方面的知识。
安全性(Security):概述Redis的安全。
加密(encryption):如何加密redis的客户端与服务端通信。。
信号处理(Signals Handling):如何处理Redis信号。
连接处理(Connections Handling):如何处理Redis客户端连接。
高可用性(High Availability):Redis Sentinel是Redis官方的高可用性解决方案。目前工作进展情况(beta阶段,积极发展),已经可用。
延迟监控(Latency monitoring):redis集成的延迟监控和报告功能对于为低延迟应用场景优化redis很有帮助。
基准(Benchmarks):看看Redis在不同平台上跑得有多快。
Redis Releases:Redis的开发周期和版本编号。
问题
- 每种数据结构的使用场景
- 是如何在自己的项目中使用的?
- 项目在上线的过程中遇到过哪些问题?
- 什么时候用做存储、缓存?