我是如何学习 redis 的
任何知识的学习都有路可循 ,比如 redis
掌握数据结构和缓存基本使用方法、
首先 ,最基本的,我们先花费最少时间学习 ,根据这些知识,在工作中进行实践和应用
1、学习基础数据的用法 ,
2、学习扩展数据类型的用法
3、积累一些 redis 用作缓存和典型问题的解决方案
简单数据结构
1、string,存储一些简单的键值对,登录 token,分布式锁
2、list,分布式队列
3、hash, 比如用户信息,想对一些属性做一些操作
3、set, 不重复的集合 ,并集、交集、交集,uv 数
4、sored set, 最常用,排行榜、带有权重的集合,延时队列
复杂数据结构
1、geo 很少用,地图,附近的人
2、bigmap 很少用
3、hyperloglog 布隆过滤器对付缓存穿透,用户签到
掌握高可靠
熟悉了一些基本的数据结构和基本的使用,就要了解一些进阶知识,比如 怎么保证数据不丢
1、持久化机制 ;rdb 拍内存快照,aof 定时记录命令,混合 rdb 和 aof 提高性能
2、主从复制: 一主多从,主、从、从等 保证数据不丢 ,
3、哨兵机制: 自己切换主从 ,3 台机器选主,主观下线和客观下线
4、集群 : codis 集群和 redis cluster 集群 ,分片存储
或者我们 可以自己思考下
当我们自己实现一个 redis 实例来存储数据,数据在内存中,如果数据丢了怎么办?我们断电时,想要快速恢复数据怎么办
有了持久化需要,数据快照 rdb 和实时命令追加技术 aof应运而生 ,当重启时,可以加载 rdb 快速恢复实例数据,
但是恢复期间耗时长和服务不可用,又有了主从复制技术 ,当主宕机是,使用从提供服务,然后主使用 rdb 和 aof 恢复数据
但是每次都需要手动切换,半夜怎么办?还睡觉不?于是 有了自动故障切换的需求,使用哨兵机制 ,可以快速探测主从故障,自动选主,自动切换。
随着业务的持续发展 ,当数据量持续增大,单个 redis 实例 过大无法承担这么大的写入和读取量(rdb 速度慢,主从降低),这个时候需要引入切片技术,把多个 reids 实例,组织起来,形成集群对外提供服务 ,前期是 codis,后期官方方案 redis cluster ,但也引入了新的问题
数据路由和数据迁移,那个数据放在那个分片,增加或者减少实例,怎么迁移数据 等等新的问题。
掌握高性能
redis 为什么性能那么高,一个灵魂拷问
1、内存数据库,所以操作基于内存
2、单线程,节省多线程切换开销
3、io 多路复用技术 ,linux 的 epoll ,
4、异步线程处理阻塞操作 ,rdb 同步、异步删除、aof 重写
但是,一些会阻塞 redis 的操作必须知道,避免
1、bigkey 的操作
2、复杂度 O(n)的命令 ,key* ,范围操作、
3、大量数据过期,rdb 复制 for子进程
掌握底层原理
学习之路,永无止境。
任何技术,想要吃透它,免不了了解他的底层实现,源码等 ,这里提供一些书籍
1、redis 使用手册:工具书
2、redis 设计和实现:原理书
3、redis 开发和运维: 实战书
最后,redis 官网,永远是最好最新的地方。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!