Redis基础
一、概述
Redis是开源高性能,基于内存允许的键值对NoSQL数据库
支持数据的持久化,可以将数据保存在磁盘中,重启之后加载到内存中 支持多种数据类型 支持master-slave模式的数据备份
二、应用场景
用途 :用于缓存 热点数据,减轻数据库 压力,提高系统性能。场景 :通过缓存 查询结果、页面数据、API 响应等,将频繁访问的数据存储在 Redis 中。这样,当相同的数据请求出现时,可以直接从缓存 中读取,而不必每次都访问数据库 。示例 :用户登录信息、商品详情、热点新闻。
2. 分布式锁
用途 :在分布式系统中,多个进程可能会同时操作共享资源,Redis 提供了简单有效的分布式锁机制,确保同一时刻只有一个进程能获取锁。场景 :需要控制多个实例并发访问共享资源时,如支付系统中的库存扣减、订单处理等操作。示例 :商品秒杀、库存扣减的场景。
3. 消息队列
用途 :Redis 的 List
数据结构可以用来实现轻量级的消息队列,支持生产者消费者模型。场景 :任务异步处理、流量削峰、解耦服务模块。示例 :订单系统中,用户下单后,系统可以将订单写入 Redis 队列中,后台异步处理订单。
4. 会话存储
用途 :将用户会话数据(如登录状态、购物车信息)存储在 Redis 中,适用于分布式应用中的会话管理。场景 :在负载均衡的情况下,用户请求可能被分发到不同的服务器,将会话数据存储在 Redis 中可以确保所有服务器访问到相同的会话信息。示例 :用户登录状态、购物车信息等。
5. 实时计数器和统计
用途 :利用 Redis 的原子自增操作,可以快速实现实时的计数和统计。场景 :统计网站的访问量、点赞数、观看数等场景,Redis 的 INCR
操作可以帮助快速实现自增。示例 :文章浏览量、视频播放次数、用户点赞次数。
6. 排行榜
用途 :Redis 的 Sorted Set
数据结构可以用来实现排行榜功能,支持按照分数对元素进行排序。场景 :需要根据某个数值(如分数、点赞数、成交额)进行排名的场景。示例 :游戏排行榜、竞赛积分排行榜、销售排行榜。
7. 社交网络中的好友关系
用途 :利用 Redis 的 Set
或 Sorted Set
数据结构,可以高效管理社交关系网络,如好友列表、共同好友、关注列表等。场景 :社交媒体、论坛、社交游戏等。示例 :微博的关注和粉丝关系,Facebook 朋友推荐。
8. 发布/订阅系统
用途 :利用 Redis 的 Pub/Sub
功能,可以实现消息的发布与订阅模式,用于构建简单的消息通知系统。场景 :用于消息广播、实时推送、通知等场景。示例 :聊天室消息、实时推送系统、在线游戏的消息推送。
9. 地理位置数据存储
用途 :Redis 的 GEO
命令支持存储地理位置的数据,提供了存储坐标点、计算距离、查询某范围内的点等功能。场景 :需要处理地理位置和地理数据的系统,如外卖配送、打车服务等。示例 :查询附近的餐馆、查找附近的车辆。
10. 限流
用途 :通过 Redis 实现对 API 的访问频率进行控制,防止滥用或攻击。场景 :限流控制可以用来限制某个用户或 IP 在一段时间内访问某个接口的次数,防止流量过大导致服务崩溃。示例 :API 调用次数限制、秒杀活动中用户请求限制。
11. 分布式任务调度
用途 :利用 Redis 的 List
或 Sorted Set
可以实现任务调度和任务延时处理。场景 :在某些场景下,需要将任务按一定时间顺序执行,或者延迟执行某些任务。示例 :订单的超时处理、任务队列的优先级调度。
三、基础知识
单线程机制工作 默认有16个数据库 ,编号从0开始 端口为6379
字符串类型常用命令
格式 作用 SET key value 设置指定key的值 GET key 获取指定key的值 SETEX key seconds value 设置指定key的值,并将key的过期时间设为seconds秒 SETNX key value 只有在key不存在时设置key的值
哈希操作命令
格式 作用 HSET key field value 将哈希表key中的字段field的值设为value HGET key field 获取存储在哈希表中指定字段的值 HDEL key field 删除存储在哈希表中指定字段的值 HKEYS key 获取哈希表中所有字段 HVALS key 获取哈希表中所有值
列表操作命令
格式 作用 LPUSH key value1 [value2] 将一个或多个值插入到列表头部 LRANGE key start stop 获取指定范围内的元素 RPOP key 移除并获取列表最后一个元素 LLEN key 获取列表长度
集合操作命令
格式 作用 SADD key member [member2] 向集合添加一个或多个成员 SMEMBERS key 返回集合中所有成员 SCARD key 获取集合的成员数 SINTER key1 [key2] 返回给定所有集合的交集 SUNION key1 [key2] 返回给定所有几个的并集 SREN key member1 [member2] 删除集合中一个或多个成员
有序集合操作命令
格式 作用 ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员 ZRANGE key start stop [WITHSCORES] 通过索引区间返回有序集合中指定区域的成员 ZINCRBY key increment member 有序集合中对指定成员的分数加上增量increment ZREM key member [member …] 移除有序集合中的一个或多个成员
通用命令
格式 作用 KEYS pattern 查找所有符合给定模式(pattern)的key EXISTS key 检查给定key是否存在 TYPE key 返回key所存储的值的类型 DEL key 该命令用于在key存在是删除key