Redis
redis是什么
给予键值对的存储服务系统,有多重数据结构
特性
- 速度快
10W OPS
- 持久化

- 多种数据结构
- 5种基本数据结构(String,HashTable,list,set,sortSet)
- BitMaps
- HyperLogLog:超小内存唯一值计数
- GEO:地理信息定位
- 支持多种变成语言
- 功能丰富
- 发布订阅
- Lua脚本
- 简单事务
- pipeline
- 主从复制
- 高可用、分布式
单机安装
典型应用场景
- 缓存系统

- 计数器

- 消息队列系统

- 排行榜
- 社交网络
- 实时流系统
安装
redis-check-aof AOF文件修复工具
redis-check-dump RDB文件检查工具
redis-sentinelsentinel服务器
启动方法
- redis-server
验证
ps -ef | grep redis
netstat -antpl | grep redis
redis-cli -h ip -p port ping
- 动态参数启动redis-server —port 6380
- 配置文件启动redis-server configPath
三种启动方式比较
生产环境选择使用配置文件启动
单机多实例配置文件可以使用端口区分开
常用配置
daemonize 是否是守护进行
port
logfile 系统日志
dir redis工作目录
merz6379
API通用命令
通用命令
keys [pattern]
不在生产环境下使用,会阻塞
dbsize 计算key的总数
时间复杂度O(1)
exists key
del key
expire key seconds
ttl key 查看key剩余的过期时间
-2说明key不存在了
-1代表key存在,并且没有过期时间
persise key 去掉key的过期时间
type key #返回key的类型
string hash list set zset none
数据结构和内部编码

单线程架构
单线程为什么这么快
1.使用内存
2.非阻塞IO
3.避免线程切换和竞态消耗
一次只运行一条命令
拒绝长(慢)命令
其实不是单线程
字符串
hash

key作为mysql表的一行,值为表的各个字段
所有命令以h开头


实战:记录网站每个用户个人主页的访问量

小心hgetall的使用
查缺补漏
list
set
zset
3.redis客户端
Jedis
4.其他功能
4.1 慢查询
生命周期
慢查询发生在第三阶段
客户端超时不一定是慢查询,但慢查询是客户端超时的一个可能性
慢查询的配置
Slowlog-max-len



4.2 流水线pipeline
4.3发布订阅
4.4 Bitmap
4.5 HyperLogLog
4.6 GEO
5.Redis持久化
作用
1.快照
mysql dump redisrdb
2.日志
mysql binlog
redis aof
RDB
什么是RDB
触发机制三种方式
save 同步命令
AOF
RDB的问题
耗时耗费性能
不可控丢失数据

三种策略
- always

- everysec(默认配置)

- no
由操作系统决定
AOF重写
- 减少硬盘占用
- 加速恢复速度

AOF重写的两种方式
- bgrewriteaof
实际是从redis进行回溯,而不是像上图演示的那样

- AOF重写配置
RDB和AOF的抉择

优先级






























































