Redis 入门笔记(后端开发必学)
一、什么是 RedisRedis 是一个基于内存的数据库和 MySQL 最大区别MySQLRedis数据存在磁盘数据存在内存查询较慢查询极快关系型数据库非关系型数据库二、为什么 Redis 这么快因为 Redis 的数据直接存在内存而不是磁盘。内存速度远远快于硬盘所以 Redis 经常用于缓存登录状态热点数据验证码排行榜分布式锁三、Redis 本质是什么你可以把 Redis 理解成超级快的 key-value 容器例如name - zhangsan age - 18 token - xxxxxxxxx本质就是key - value四、Redis 和 MySQL 的关系很多新人误以为Redis 能替代 MySQL其实不是。一般开发MySQL 负责永久存储 Redis 负责高速缓存真实项目用户数据存在 MySQL 热点数据放 Redis五、为什么需要缓存例如用户首页数据每次都查 MySQL数据库压力会很大于是第一次查 MySQL第二次直接查 Redis速度会快很多。六、Redis 工作流程重点用户请求 ↓ 先查 Redis ↓ Redis 有数据 → 直接返回 Redis 没数据 ↓ 查 MySQL ↓ 把数据存进 Redis ↓ 返回数据这就是缓存七、安装 Go RedisGo 里面常用go get github.com/redis/go-redis/v9八、连接 Redispackagemainimport(contextfmtgithub.com/redis/go-redis/v9)varctxcontext.Background()funcmain(){rdb:redis.NewClient(redis.Options{Addr:localhost:6379,Password:,DB:0,})result,err:rdb.Ping(ctx).Result()iferr!nil{panic(err)}fmt.Println(result)}输出PONG说明连接成功。九、Redis 核心操作Redis 本质key-value所以最核心就是增删改查十、存数据SETrdb.Set(ctx,name,zhangsan,0)含义key name value zhangsan最后一个0表示永不过期十一、取数据GETvalue,_:rdb.Get(ctx,name).Result()fmt.Println(value)输出zhangsan十二、删除数据DELrdb.Del(ctx,name)十三、设置过期时间重点Redis 最大特点之一可以自动过期例如验证码5分钟后失效示例rdb.Set(ctx,code,123456,time.Minute*5)表示5分钟后自动删除十四、为什么 JWT 常配 Redis登录后服务器生成 JWT。但 JWT 默认无法主动失效所以很多项目会把 token 存 Redis。例如token - 用户ID退出登录直接删 Redis这样JWT 就失效了。十五、Redis 常见数据类型Redis 不只是字符串。还支持类型作用String字符串List列表Hash哈希Set集合ZSet有序集合十六、String最常用name - zhangsan最简单。项目里token验证码缓存基本都用它。十七、Hash重点类似对象例如user:1 name - zhangsan age - 18Go 示例rdb.HSet(ctx,user:1,name,zhangsan)rdb.HSet(ctx,user:1,age,18)获取name,_:rdb.HGet(ctx,user:1,name).Result()十八、Redis 和 Gin真实开发Gin Gorm Redis非常常见。例如登录流程用户登录 ↓ Gin 接收账号密码 ↓ 查 MySQL ↓ 生成 JWT ↓ token 存 Redis ↓ 返回 token十九、Redis 为什么适合高并发因为Redis 单线程 内存操作速度极快。很多大型网站先查 Redis 再查数据库否则数据库扛不住。二十、Redis 第一阶段学什么不要一开始就研究集群哨兵LuaRedLock第一阶段真正需要掌握1. Redis 是什么 2. 为什么用 Redis 3. key-value 思想 4. SET/GET/DEL 5. 过期时间 6. 缓存流程这些就够了。二十一、最后总结Redis 本质超高速内存数据库最核心思想key - value真实开发里Redis 最常用于缓存 登录状态 验证码 排行榜 热点数据而且Go 后端开发里Gin Gorm Redis几乎属于标配组合。