Redis之最佳使用
2016-04-13 00:00
549 查看
摘要: Redis简介
Redis高可用平台演进
Redis特点
如何使用Redis服务
REDIS简介
lRemote Dictionary Server
lKV NoSQL
lIn-memory can persistent
lOpen Source
lBorn on 2009 @antirez
l现使用版本2.8.19
l3.0 Support cluster
REDIS高可用平台演进
lV1版本:
lMaster/slave + keepalived+VIP
lV1版本缺点:
l特殊场景处理不完美
lMaster/Slave, Master故障后,有可能需要人为参与Master/Slave关系指定
l单机多实例keepalived无配置动态加载
l偶而出现双Master现象
lKeepalived异常出,双边出现VIP现象
lV2版本:
lMaster/Slave+Sentinel
lRedis 2.8后支持
REDIS特点
l进程特点
l单进程,只能使用到一个Core
l基于事件编程,Epoll接入,对于连接数不太care
lMaster/Slave
lSlave加入,需要从Master获取一份全量数据
lMaster需要做Bgsave,会Dobule一份内存
lStorage & Cache
lStorage 不能和Cache混用
lStorage不能使用LRU
lStorage数据超过内存后,会出现不响应的现象
lStorage 不能和Cache混用
lStorage不能使用LRU
lStorage数据超过内存后,会出现不响应的现象
lLRU算法maxmemory-policy
lVolatile-lru
lAllkeys-lru
lVolatile-random
lAllkeys-random
lVolatile-ttl
lNoeviction
l特别小心对待O(N)命令
lSMEMBERS
lLRANGE
lHMGET
l不要设计过大的{list, set,hash}
l容易造hash不均衡
l容易引起慢查询
l慢查询多则导致客户端超时
lRedis内存分布
lredis内存使用量估算方式:(key的平均长度+value的平均长度)*kv的个数*2
l所以严禁在Redis中存储大量的静态数据
如何使用REDIS服务
lMySQL VS Redis
l多线程 VS 单进程
lRedis对slow query都不能容忍
l只要不使用事务,则不要需要引入并发控制,不存在多版本
l非常容易统计ResponseTime
l磁盘 VS 内存
l可提供十万的qps
l不能容忍使用到swap
l主从复制
l同步不落地,同步依赖于内存+网络
l网络瞬断可以续传,2.8以前是全量
lSlave crash后几乎都要重做
l级联复制可靠性低
l主从切换需要重做从库,1主多从不现实
l复制上没有MySQL靠谱
l变更持久性
lAlways,everysec, no
l主从一致性
l从库延时微秒级别
l可配至少m个从库延时在N秒内
l数据安全性
l可以设置密码
lRedis权限无分级,有密码后可以做所有事情MySQL VS Redis
Redis高可用平台演进
Redis特点
如何使用Redis服务
REDIS简介
lRemote Dictionary Server
lKV NoSQL
lIn-memory can persistent
lOpen Source
lBorn on 2009 @antirez
l现使用版本2.8.19
l3.0 Support cluster
REDIS高可用平台演进
lV1版本:
lMaster/slave + keepalived+VIP
lV1版本缺点:
l特殊场景处理不完美
lMaster/Slave, Master故障后,有可能需要人为参与Master/Slave关系指定
l单机多实例keepalived无配置动态加载
l偶而出现双Master现象
lKeepalived异常出,双边出现VIP现象
lV2版本:
lMaster/Slave+Sentinel
lRedis 2.8后支持
REDIS特点
l进程特点
l单进程,只能使用到一个Core
l基于事件编程,Epoll接入,对于连接数不太care
lMaster/Slave
lSlave加入,需要从Master获取一份全量数据
lMaster需要做Bgsave,会Dobule一份内存
lStorage & Cache
lStorage 不能和Cache混用
lStorage不能使用LRU
lStorage数据超过内存后,会出现不响应的现象
lStorage 不能和Cache混用
lStorage不能使用LRU
lStorage数据超过内存后,会出现不响应的现象
lLRU算法maxmemory-policy
lVolatile-lru
lAllkeys-lru
lVolatile-random
lAllkeys-random
lVolatile-ttl
lNoeviction
l特别小心对待O(N)命令
lSMEMBERS
lLRANGE
lHMGET
l不要设计过大的{list, set,hash}
l容易造hash不均衡
l容易引起慢查询
l慢查询多则导致客户端超时
lRedis内存分布
lredis内存使用量估算方式:(key的平均长度+value的平均长度)*kv的个数*2
l所以严禁在Redis中存储大量的静态数据
如何使用REDIS服务
lMySQL VS Redis
l多线程 VS 单进程
lRedis对slow query都不能容忍
l只要不使用事务,则不要需要引入并发控制,不存在多版本
l非常容易统计ResponseTime
l磁盘 VS 内存
l可提供十万的qps
l不能容忍使用到swap
l主从复制
l同步不落地,同步依赖于内存+网络
l网络瞬断可以续传,2.8以前是全量
lSlave crash后几乎都要重做
l级联复制可靠性低
l主从切换需要重做从库,1主多从不现实
l复制上没有MySQL靠谱
l变更持久性
lAlways,everysec, no
l主从一致性
l从库延时微秒级别
l可配至少m个从库延时在N秒内
l数据安全性
l可以设置密码
lRedis权限无分级,有密码后可以做所有事情MySQL VS Redis
相关文章推荐
- redis安装问题小结
- 使用 Redis 和 Python 构建一个共享单车的应用程序
- Redis偶发连接失败案例实战记录
- Redis中实现查找某个值的范围
- redis的hGetAll函数的性能问题(记Redis那坑人的HGETALL)
- Redis和Memcached的区别详解
- 分割超大Redis数据库例子
- Redis总结笔记(一):安装和常用命令
- Redis sort 排序命令详解
- 用Redis实现微博关注关系
- redis中修改配置文件中的端口号 密码方法
- 在Ruby on Rails上使用Redis Store的方法
- Redis和Memcache的区别总结
- 在Node.js应用中使用Redis的方法简介
- Redis服务器的启动过程分析
- web 应用中常用的各种 cache详解
- 利用yum安装Redis的方法详解
- 从MySQL到Redis的简单数据库迁移方法
- 为啥懒 Redis 是更好的 Redis
- 利用Redis实现SQL伸缩的方法