Redis是一个key-value存储系统(键值存储系统),支持丰富的数据类型,如:String、list、set、zset、hash
Redis以内存作为数据存储介质,读写数据的效率极高。
Redis跟memcache不同的是,储存在Redis中的数据是持久化的
支持主从配置,可以配置集群
使用场景:
1、配合关系型数据库做高速缓存,会话缓存(最常用),session,日志缓存等。
2、消息队列(支付),django+celery,redis用做数据存储
3、活动排行榜或计数,限制一个手机号发多少条短信、一个接口一分钟限制多少请求
4、发布,订阅消息(消息通知)
5、分布式锁(python实现:https://blog.csdn.net/weixin_43357972/article/details/106446004)
任何 list、set、和 sorted set 都可以放 2的32次方 个元素,Redis 的存储极限是系统中的可用内存值。
数据持久化:
承受数分钟以内的数据丢失,那么你可以只使用RDB持久化。指定的时间间隔内将内存中的数据集快照写入磁盘。
并且 RDB 恢复数据集的速度也要比AOF恢复的速度要快。AOF会每隔1秒备份,数据更全。
redis mysql同步
一、对强一致要求比较高的,应采用实时同步方案,即查询缓存查询不到再从DB查询,保存到缓存;更新缓存时,先更新数据库,再将缓存的设置过期(建议不要去更新缓存内容,直接设置缓存过期)。
二、对于并发程度较高的,可采用异步队列的方式同步,可采用kafka等消息中间件处理消息生产和消费。