redis 和 memcache学习总结

redis 和 memcache

redis:支持持久化mc:不支持
单线程多线程
内存分配采用临时申请内存预分配
内存VM,数据量超量时,会引发swap存储在物理内存
支持KV,V可以是string,map,list,set,SortSet只支持KV
天然高可用,支持集群要二次开发,做集群
value无限制value最大1M
redis: 集群高可用
	考虑雪崩,提前评估db能力,做防护
	微服务,数据、缓存独立,多服务之间不要共用缓存,导致耦合度高,A服务的热数据把B服务的热数据挤出去
缓存修改:失效还是删除
读: 可以缓存失效或者修改,cache hit直接返回,cache miss ,get db ,set cache,返回
	对于简单型数据,比如int,string,直接set可以,成本低
	对于User,html,json,修改时要先get,在反序列化或者解析,
	在修改,然后序列化,在set,成本高,一般选择直接失效
	具体看情况,一般直接失效,问题也不大	
写: 先操作数据库,直接del缓存,如果先操作cache,
	在数据库主从同步未完成之前,可能导致数据库和缓存数据不一致
缓存脏数据原因:
1、先操作缓存,后数据库
	可能主从同步没有完成,写后立马读,导致读到从库脏数据,set回缓存,
	这是主从同步完成,导致缓存和数据库数据不一致。可以在从库binlog完成后
	主动删除缓存,保持数据一致(可以用cannal?)
2、先操作数据库,后缓存
	写线程主库更新数据,删除缓存,读线程读到从库,set回缓存脏数据。
	解决可以在binlog后注定删除缓存,保持一致。
主从本质解决问题:
读写分离,提升读的性能
	主库写,从库读,主从 数据同步,同步有延迟,可能读取的数据不一致。		

redis 是否需要高可用:

	假如redis挂了,流量全部压倒数据库,不会导致雪崩,没必要高可用

redis 是否要用要固话

	如果redis是指做缓存,允许cache miss,没必要固话。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值