目录

redis (REmote DIctionary Server)

概述

架构:

  • 单线程架构,无线程切换,无锁,无竞态条件

  • epoll多路复用模型

  • 事件模型, Redisconnect read write close 都转换为 event 事件,不在网络IO中浪费CPU时间

性能:

  • read : 11w/s

  • write : 8w/s

功能:

  • 持久化机制,RDBAOF,数据可以保存在硬盘

  • 健过期机制,可以用来实现缓存

  • 发布订阅机制,可以用来实现消息系统

  • 支持Lua脚本,可以用来创造新的redis命令

  • 流水线机制,能保证客户端一次性将一批命令传到redis执行

  • Master-slave,可做热备,读写分离

  • 分布式实现 Redis Cluster

  • 单指令操作是原子性的

  • 一定程度上的事务一致性,Multi cmd1 cmd2 exec,一组命令原子性操作

缺点:

  • 单线程,命令串行执行,如果一个命令执行时间过长,将会阻塞后面命令执行

应用场景:

  • 缓存

  • 排行榜: listsorted set

  • 计数器: 视频播放数,电商网站浏览数,+1 操作

  • 社交网络: 赞/踩 粉丝 共同好友 共同喜好 推送 下拉刷新

  • 消息队列

安装 Redis

# ubuntu 16.04 系统
➜  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

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libtcl8.6 tcl8.6
Suggested packages:
  tcl-tclreadline
The following NEW packages will be installed:
  libtcl8.6 tcl tcl8.6

# 编译 redis
➜ make

cd src && make all
make[1]: Entering directory '/home/cky/software/redis-4.0.1/src'
  CC Makefile.dep
  CC adlist.o
  CC quicklist.o
  ...

# 安装 redis
➜  redis sudo make install

cd src && make install

# 检查是否安装成功
➜  redis redis-cli -v
redis-cli 4.0.1

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