Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。
- 特性:
- 运行在内存中的数据集工作方式
- 支持多种数据结构
- 提供不同级别的磁盘持久化功能
- 可搭建高可用集群
- 支持对数据进行原子操作
- 支持主从复制
- 支持事务
- 内存回收
- 过期自动删除key
- 订阅分发
- LUA脚本
- 自动故障转移
- 支持大多数编程语言
使用Docker管理Redis服务,省去繁琐的安装配置,快速启动停止,快速部署Redis Cluster
使用Redis官方镜像:
拉取镜像:
docker pull redis
启动一个redis实例
$ docker run --name some-redis -d redis
启动实例开启持久性存储
$ docker run --name some-redis -d redis redis-server --appendonly yes
如果保存数据文件到宿主机,使用-v选项,数据卷挂载即可。
从另外一个应用连接到此容器
$ docker run --name some-app --link some-redis:redis -d application-that-uses-redis
redis客户端连接到此服务
$ docker run -it --link some-redis:redis --rm redis redis-cli -h redis -p 6379
启动时使用自定义配置文件,配置文件放置在宿主机/myredis/conf/redis.conf
$ docker run -v /myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf --name myredis redis redis-server /usr/local/etc/redis/redis.conf
redis主从复制实现读写隔离
原理:
1)当一个从数据库启动时,会向主数据库发送sync命令,
2)主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来
3)当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库。
4)从数据库收到后,会载入快照文件并执行收到的缓存的命令。
这里使用一主一从,也可以一主多从
$ docker run --name master-redis -p 6379:6379 -d redis redis-server --appendonly yes
$ docker run --name slave-redis --link master-redis:master-redis -p 6380:6379 -d redis redis-server --appendonly yes --slaveof master-redis 6379
master-redis可以读写
./redis-cli -p 6379
./redis-cli -p 6380
slave-redis只能读,不能写