Redis
概述
架构:
单线程架构,无线程切换,无锁,无竞态条件
epoll
多路复用模型事件模型,
Redis
将connect
read
write
close
都转换为event
事件,不在网络IO
中浪费CPU
时间
功能:
持久化机制,
RDB
和AOF
,数据可以保存在硬盘健过期机制,可以用来实现缓存
发布订阅机制,可以用来实现消息系统
支持
Lua
脚本,可以用来创造新的redis命令流水线机制,能保证客户端一次性将一批命令传到redis执行
Master-slave
,可做热备,读写分离分布式实现
Redis Cluster
单指令操作是原子性的
一定程度上的事务一致性,
Multi
cmd1
cmd2
exec
,一组命令原子性操作
缺点:
单线程,命令串行执行,如果一个命令执行时间过长,将会阻塞后面命令执行
应用场景:
缓存
排行榜:
list
和sorted set
计数器: 视频播放数,电商网站浏览数,+1 操作
社交网络: 赞/踩 粉丝 共同好友 共同喜好 推送 下拉刷新
消息队列
安装 Redis
➜ pwd
/home/cky/software
➜ tree -L 1
.
├── redis -> redis-4.0.1
├── redis-4.0.1
└── redis-4.0.1.tar.gz
# 这里编译安装失败 原因是 tcl 依赖没装,需要安装下
➜ cd redis
➜ sudo make test
cd src && make test
# 安装 tcl
➜ sudo apt-get install tcl
# 编译 redis
➜ make
cd src && make all
make[1]: Entering directory '/home/cky/software/redis-4.0.1/src'
CC Makefile.dep
# 安装 redis
➜ redis sudo make install
cd src && make install
redis命令
安装完redis后,命令会拷贝在 /usr/local/bin 目录下
redis-server 启动redis
redis-cli 命令行客户端
redis-benchmark 基准测试工具
redis-check-aof aof持久化文件检测和修复工具
redis-check-dump rdb持久化文件检测和修复工具
redis-sentinel 启动Redis Sentinel
启动 / 关闭redis服务
1. 可执行文件直接启动
redis-server /path/to/redis.conf
redis-cli -h xx.xx.xx.xx -p xxxx shutdown [save|nosave] 关闭redis-server [保存|不保存内存数据]
2. 通过apt-get安装的redis包
sudo service redis-server start | stop | restart