Redis基础

Redis基础

一、概述

Redis是开源高性能,基于内存允许的键值对NoSQL数据库

  • 支持数据的持久化,可以将数据保存在磁盘中,重启之后加载到内存中
  • 支持多种数据类型
  • 支持master-slave模式的数据备份

二、应用场景

1. 缓存

  • 用途:用于缓存热点数据,减轻数据库压力,提高系统性能。
  • 场景:通过缓存查询结果、页面数据、API 响应等,将频繁访问的数据存储在 Redis 中。这样,当相同的数据请求出现时,可以直接从缓存中读取,而不必每次都访问数据库。
  • 示例:用户登录信息、商品详情、热点新闻。

2. 分布式锁

  • 用途:在分布式系统中,多个进程可能会同时操作共享资源,Redis 提供了简单有效的分布式锁机制,确保同一时刻只有一个进程能获取锁。
  • 场景:需要控制多个实例并发访问共享资源时,如支付系统中的库存扣减、订单处理等操作。
  • 示例:商品秒杀、库存扣减的场景。

3. 消息队列

  • 用途:Redis 的 List 数据结构可以用来实现轻量级的消息队列,支持生产者消费者模型。
  • 场景:任务异步处理、流量削峰、解耦服务模块。
  • 示例:订单系统中,用户下单后,系统可以将订单写入 Redis 队列中,后台异步处理订单。

4. 会话存储

  • 用途:将用户会话数据(如登录状态、购物车信息)存储在 Redis 中,适用于分布式应用中的会话管理。
  • 场景:在负载均衡的情况下,用户请求可能被分发到不同的服务器,将会话数据存储在 Redis 中可以确保所有服务器访问到相同的会话信息。
  • 示例:用户登录状态、购物车信息等。

5. 实时计数器和统计

  • 用途:利用 Redis 的原子自增操作,可以快速实现实时的计数和统计。
  • 场景:统计网站的访问量、点赞数、观看数等场景,Redis 的 INCR 操作可以帮助快速实现自增。
  • 示例:文章浏览量、视频播放次数、用户点赞次数。

6. 排行榜

  • 用途:Redis 的 Sorted Set 数据结构可以用来实现排行榜功能,支持按照分数对元素进行排序。
  • 场景:需要根据某个数值(如分数、点赞数、成交额)进行排名的场景。
  • 示例:游戏排行榜、竞赛积分排行榜、销售排行榜。

7. 社交网络中的好友关系

  • 用途:利用 Redis 的 SetSorted Set 数据结构,可以高效管理社交关系网络,如好友列表、共同好友、关注列表等。
  • 场景:社交媒体、论坛、社交游戏等。
  • 示例:微博的关注和粉丝关系,Facebook 朋友推荐。

8. 发布/订阅系统

  • 用途:利用 Redis 的 Pub/Sub 功能,可以实现消息的发布与订阅模式,用于构建简单的消息通知系统。
  • 场景:用于消息广播、实时推送、通知等场景。
  • 示例:聊天室消息、实时推送系统、在线游戏的消息推送。

9. 地理位置数据存储

  • 用途:Redis 的 GEO 命令支持存储地理位置的数据,提供了存储坐标点、计算距离、查询某范围内的点等功能。
  • 场景:需要处理地理位置和地理数据的系统,如外卖配送、打车服务等。
  • 示例:查询附近的餐馆、查找附近的车辆。

10. 限流

  • 用途:通过 Redis 实现对 API 的访问频率进行控制,防止滥用或攻击。
  • 场景:限流控制可以用来限制某个用户或 IP 在一段时间内访问某个接口的次数,防止流量过大导致服务崩溃。
  • 示例:API 调用次数限制、秒杀活动中用户请求限制。

11. 分布式任务调度

  • 用途:利用 Redis 的 ListSorted 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值