实战Redis,解决高并发性能问题( 二 )


 

实战Redis,解决高并发性能问题

文章插图
 
应用场景:用于高可用需求场景,可用于高可用Cache,存储等场景 。内存/QPS受限于单机 。
4.3.3. Redis Cluster可直接采用官方给出的推荐方案,将node配置成主从结构 。图下图所示为最小节点的Redis高并发、高可用集群 。
应用场景:用于高可用需求场景,可用于大数据量高可用Cache/存储等场景 。内存/QPS不受限于单机,可受益于分布式集群高扩展性 。
实战Redis,解决高并发性能问题

文章插图
 

实战Redis,解决高并发性能问题

文章插图
 
4.4. 数据存储格式鉴于我们的微服务众多,为了规避key一样的情况发生 。因此,需要约定下存储格式:服务名#业务分类名##key(调用的key)
公共接口数据key约定:服务器ID#user##key(调用的key);
独立微服务数据key约定:服务器ID#服务名##users##getUsersDetail(调用的key);
以上所有的“cs#user##”或“服务名#”开头的前缀,统一由公共接口实现,业务方使用时的入口为最后的key即可 。
4.5. 可用API接口:IRedisService
序号
接口定义
描述
 
1
boolean set(String key, Object value)
添加String类型的缓存数据
 
2
boolean set(String key, Object value, Long expireTime)
自定义有效时间的String类型缓存数据
 
3
Object get(String key)
读取String类型的缓存
 
4
void setHash(String key, Map<?,?> map)
哈希 添加Map
 
5
Object getHash(String key)
获取哈希数据
 
6
void setList(String key, Object value)
List列表添加
 
7
List<Object> getList(String key, long start, long end)
List列表获取
start 开始
end 结束 0 到 -1代表所有值
8
void addSet(String key, Object value)
Set集合添加
 
9
【实战Redis,解决高并发性能问题】Set<Object> getSet(String key)
Set集合获取
 
10
void addZSet(String key, Object value, double scoure)
ZSet有序集合添加
 
11
Set<Object> getZSet(String key, double scoure, double scoure1)
ZSet有序集合获取
 
12
boolean expire(String key,long time)
指定某key的缓存有效时间
 
13
long getExpire(String key)
获取指定key的过期时间
 
14
void remove(String... keys)
删除一组或单个key的缓存数据
 
15
boolean exists(String key)
判断缓存中是否有对应的value
 
 
5. 运行保障5.1. 监控指标连接客户数
阻塞连接数
Redis占用内存
内存峰值
主从角色
master_link_status
执行命令总数和qps
上报时间




推荐阅读