Redis基础

server/2024/9/24 6:36:33/

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

http://www.ppmy.cn/server/121213.html

相关文章

常见排序详解

1、常见的排序算法 插入排序:直接插入排序、希尔排序; 选择排序:选择排序、堆排序; 交换排序:冒泡排序、快速排序; 归并排序:归并排序; 2、常见排序算法的实现 2.1 插入排序 2…

python:编写一个函数查找字符串中的最长公共前缀

最近在csdn网站上刷到一个题目,题目要求编写一个函数查找字符串中的最长公共前缀,题目如下: 给出的答案如下: from typing import List def longestCommonPrefix(strs:List[str]) -> str:if len(strs) 0:return i 0 #代…

0-1开发自己的obsidian plugin DAY 1

官网教程有点mismatch,而且从0-100跨度较大,📝记录一下自己的踩坑过程 首先,官网给的example里只有main.ts,需要自己编译成main.js 在视频教程(https://www.youtube.com/watch?v9lA-jaMNS0k)里…

第五章 继承、多态、抽象类与接口 (5)

5.5 方法的重载 构造方法的名称已经由类名决定,所以构造方法只有一个名称,但如果希望以不同的方式来实例化对象,就需要使用多个构造方法来完成。由于这些构造方法都需要根据类名进行命名,为了让方法名相同而形参不同的构造方法同时…

防火墙详解(一) 网络防火墙简介

原文链接:https://blog.csdn.net/qq_46254436/article/details/105519624 文章目录 定义 与路由器和交换机的区别 发展历史 防火墙安全区域 定义 防火墙主要用于保护一个网络区域免受来自另一个网络区域的网络攻击和网络入侵行为 “防火墙”一词起源于建筑领域&…

【论文笔记】Are Large Kernels Better Teacheres than Transformers for ConvNets

Abstract 本文提出蒸馏中小核ConvNet做学生时,与Transformer相比,大核ConvNet因其高效的卷积操作和紧凑的权重共享,使得其做教师效果更好,更适合资源受限的应用。 用蒸馏从Transformers蒸到小核ConvNet的效果并不好,原…

杰发科技——Eclipse环境安装

文件已传到网盘: 1. 安装文件准备 2. 安装Make 默认路径:C:\Program Files (x86)\GnuWin32\bin\ 不复制的话会报错 Error: Program "make" not found in PATH 3. 安装工具链 默认路径:C:\Program Files (x86)\Arm GNU Toolchain…

WPF TextBox 控件文本水平垂直居中

WPF TextBox 控件文本水平垂直居中 水平居中 HorizontalContentAlignment"Center"垂直居中 VerticalContentAlignment"Center"