Redis 核心知识点汇总:安装配置 + 9 大数据结构命令与场景

目录

一、Redis简介

二、Redis安装(linux环境)

前期安装注意事项

配置redis

[退出 和 关闭 redis](#退出 和 关闭 redis)

三、Redis数据结构

常用类型

[(1)String 字符串](#(1)String 字符串)

结构图

常用命令

场景

[(2)Hash 哈希](#(2)Hash 哈希)

结构图

常用命令

场景

[(3)List 列表](#(3)List 列表)

结构图

常用命令

场景

[(4)Set 集合](#(4)Set 集合)

结构图

常用命令

场景

[(5)ZSet 有序集合](#(5)ZSet 有序集合)

结构图

常用命令

场景

特殊类型

[(6)Bitmap 位图](#(6)Bitmap 位图)

(7)HyperLogLog

[(8)Geo 地理位置](#(8)Geo 地理位置)

(9)Stream


一、Redis简介

  • 属于NoSQL数据库的范畴

  • NoSQL(Not Only SQL),非关系型数据库

    • K-V:Redis

    • 列族:HBase

    • 图形:Neo4J

    • 文档:MongoDB,Elasticsearch(倒排索引)

  • 特点

    • 性能好

    • 单线程

    • 多路复用

    • 丰富的数据类型(5种主要数据类型 + bitmap hpyerloglog 地理....)

    • 模拟消息中间件(消息队列 MQ Message Queue)

    • 分布式锁机制

    • 持久化

    • 主从复制

    • 集群架构

二、Redis安装(linux环境)

首先进入之前学习的centos连接到MobaXterm客户端

前期安装注意事项

因为redis是c语言编写,所以在客户端先安装gcc

bash 复制代码
# 关闭防⽕墙
systemctl stop firewalld.service

# 永久关闭防火墙
systemctl disable firewalld

# 查看状态
firewall-cmd --state
bash 复制代码
# 检查版本
gcc --version

# 安装 gcc
yum install gcc

因为我已经提前下好了所以这里不给实际情况图了
下载好gcc后,养成好习惯,将redis单独创建一个文件夹;

我放在了usr/local/redis下,进入该文件夹下,

输入安装命令:

bash 复制代码
wget https://download.redis.io/releases/redis-7.4.1.tar.gz

下载redis的linux压缩包,这里使用的是7版本用于学习

解压redis包:

bash 复制代码
tar -zxvf redis-7.4.1.tar.gz

进入7版本目录,进行编译安装**(做完这一步才是真正安装成功)**

bash 复制代码
# 进入目录
cd redis-7.4.1

# 编译安装
make && make install

安装完成后在local下的bin文件中会生成相应的服务

出现箭头所指的两个服务就表示安装成功了
文件介绍:

  • redis-benchmark:性能测试工具
  • redis-check-aof:修复有问题的 aof 文件
  • redis-check-rdb:修复有问题的rdb文件
  • redis-sentinel:Redis集群使用
  • redis-server:Redis服务器启动命令
  • redis-cli:客户端,操作入口
    在bin目录下或者redis本身包下启动:redis-server

配置redis

这个启动方式无法在后台进行运行,退出后会直接关闭redis服务,

所以我们进配置文件中对redis做些设置

注意这里要先进reids文件目录:vim redis.conf

进到一个类似这样的文件,然后去寻找以下配置进行修改

注释掉这个内容,就可以支持远程连接了

bash 复制代码
bind * -::*

关闭安全保护机制,就可以进行远程连接了

bash 复制代码
protected-mode no

开启守护进程,就可以后台运行了

bash 复制代码
daemonize yes

可以给默认用户设置密码(可以不做,如果设置了记得登录时需要验证一遍密码)

bash 复制代码
requirepass 1qaz@WSX

保存退出后,之后就要使用配置文件进行启动redis(可后台):redis-server redis.conf

使用 redis-cli连接测试

出现最下面那个提示框就是登录成功了

退出 和 关闭 redis

bash 复制代码
# 退出redis
quit
# 关闭redis
redis-cli shutdown

这里推荐一款软件作为redis的客户端:Another Redis Desktop Manager

可以自行去gitee下载,下载好后点击new connection

host栏输入你的虚拟机的ip地址,post输入默认的本地端口号6379,如果前面有设置密码的记得加上密码

三、Redis数据结构

常用类型

(1)String 字符串

用途:最简单的 key-value,存单个值、数字、JSON 都行,支持原子加减。

结构图
bash 复制代码
key → "value"
user:1 → '{"name":"roy","age":20}'
常用命令
bash 复制代码
SET  key value       # 存
GET  key              # 取
MSET k1 v1 k2 v2     # 批量存
MGET k1 k2            # 批量取
INCR key              # 数字+1
DECR key              # 数字-1
EXPIRE key 10         # 10秒过期
SETNX key value       # 不存在才存(分布式锁)
场景
  • 单值缓存:配置、计数器、限流计数
  • 对象缓存:直接存 JSON
  • 分布式锁:SET lock true EX 10 NX

(2)Hash 哈希

用途:一个 key 里存多个字段,适合对象、购物车,比 String 省内存、改字段方便。

结构图
bash 复制代码
key
 ├─ field1 → value1
 ├─ field2 → value2
 └─ field3 → value3

user:1
 ├─ name → roy
 └─ age  → 20
常用命令
bash 复制代码
HSET  k f v          # 设字段
HGET  k f            # 取字段
HMSET k f1 v1 f2 v2 # 批量设
HMGET k f1 f2        # 批量取
HDEL  k f            # 删字段
HGETALL k            # 查所有
HINCRBY k f 1        # 字段数字+1
场景
  • 用户信息:user:1 {name,age,balance}
  • 购物车:cart:uid {goodsId → count}

(3)List 列表

用途:有序、可重复、两头进出,做队列、栈、消息流。

结构图
bash 复制代码
key → [a][b][c][d]
索引:   0  1  2  3
负数:  -4 -3 -2 -1
常用命令
bash 复制代码
LPUSH  k v           # 左边头插
RPUSH  k v           # 右边尾插
LPOP   k             # 左出头
RPOP   k             # 右出尾
LRANGE k 0 -1        # 查全部
BLPOP  k 0           # 阻塞左出(0=一直等)
场景
  • 栈:LPUSH + LPOP
  • 队列:LPUSH + RPOP
  • 消息队列:LPUSH + BRPOP
  • 时间线 /feed 流:文章列表、动态列表

(4)Set 集合

用途:无序、元素不重复,做点赞、关注、共同好友、去重。

结构图
bash 复制代码
key → {a, b, c, d}
(无序,无重复)
常用命令
bash 复制代码
SADD    k v          # 加元素
SREM    k v          # 删元素
SMEMBERS k           # 查所有
SCARD   k            # 数量
SISMEMBER k v        # 是否存在
SRANDMEMBER k 2      # 随机取2个(不删)
SPOP    k 1          # 随机弹出1个(删除)

# 集合运算
SINTER  s1 s2         # 交集(共同好友)
SUNION  s1 s2         # 并集
SDIFF   s1 s2         # 差集
场景
  • 点赞:like:post1 {uid1,uid2}
  • 抽奖:参与用户放 set,随机 pop
  • 共同关注、好友推荐

(5)ZSet 有序集合

用途:唯一 + 按分数排序,做排行榜、延时队列、带权重排序。

结构图
bash 复制代码
key → (score1:memberA), (score2:memberB), (score3:memberC)
按 score 从小到大排序
常用命令
bash 复制代码
ZADD    k 100 a      # 加分值元素
ZREM    k a           # 删元素
ZSCORE  k a           # 查分数
ZINCRBY k 5 a         # 分数+5
ZCARD   k             # 元素数

ZRANGE  k 0 9         # 正序前10
ZREVRANGE k 0 9 WITHSCORES  # 倒序前10+分数

ZUNIONSTORE dest 2 s1 s2  # 合并榜单
场景
  • 热搜 / 排行榜:文章阅读量、积分排名
  • 延时任务:score = 时间戳,轮询取到期任务

特殊类型

(6)Bitmap 位图

用途:用 0/1 记录状态,极省空间:1 个 bit 记一件事。

结构图

bash 复制代码
key → 0 1 0 1 1 0 1 ...(每一位是 0/1)
偏移:0 1 2 3 4 5 6 ...

常用命令

bash 复制代码
SETBIT k 10 1        # 第10位设为1
GETBIT k 10           # 查第10位
BITCOUNT k            # 统计有多少个1(签到次数)
BITPOS   k 1          # 第一个1的位置

场景

  • 签到:sign:uid 每天一位,1 = 签到
  • 活跃状态、在线状态、权限开关

(7)HyperLogLog

用途:用极小内存统计 "不重复元素个数"(UV、去重计数),不存明细,只算数量。

结构图

bash 复制代码
key → 内部概率结构(不存原始数据)
输入:1.1.1.1、1.1.1.2、1.1.1.1
输出:去重后数量=2

常用命令

bash 复制代码
PFADD   k 1.1.1.1     # 加入元素
PFCOUNT k              # 统计去重总数(UV)
PFMERGE dest k1 k2     # 合并多个统计

场景

  • 页面 UV、日活统计(亿级数据只需 12KB)

(8)Geo 地理位置

用途:存经纬度、算距离、查附近,外卖 / 地图 / LBS。

结构图

bash 复制代码
key
 ├─ 北京 → (lon, lat)
 └─ 上海 → (lon, lat)

常用命令

bash 复制代码
GEOADD k 116.4 39.9 北京    # 加地点经纬度
GEOPOS k 北京                  # 查经纬度
GEODIST k 北京 上海 km        # 算距离(km/m)
GEORADIUS k 116.4 39.9 5 km  # 附近5km

场景

  • 附近门店、外卖骑手、距离排序

(9)Stream

用途:Redis 消息队列,支持持久、消费组、确认机制,类似 Kafka 简化版。

结构图

bash 复制代码
stream:mystream
msg1(id1) → {k:v}
msg2(id2) → {k:v}
msg3(id3) → {k:v}

consumer group → 分配给不同消费者,记录消费位点

常用命令

bash 复制代码
XADD   k * name roy       # 发消息(*自动生成id)
XRANGE k - +               # 查全部消息
XGROUP CREATE k g1 0       # 创建消费组
XREADGROUP GROUP g1 c1 STREAMS k >  # 消费未读消息
XPENDING k g1               # 查看消费进度/待确认

场景

  • 消息队列、日志流、事件通知、需要 ack 的任务队列
相关推荐
IMPYLH1 小时前
Linux 的 yes 命令
linux·运维·服务器·数据库·bash
i220818 Faiz Ul1 小时前
相亲网站|相亲网站系统|基于Java+vue相亲网站系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·相亲网站系统
ZFSS1 小时前
Pika 视频生成 API 集成教程
java·数据库·人工智能·ai·音视频
码不停蹄的玄黓1 小时前
MySQL 索引失效 12 大场景
数据库·mysql
凯丨1 小时前
Claude Managed Agents 实战:用多智能体编排 + Webhooks 跑一个“自动审稿流水线“
数据库
吃胖点儿1 小时前
RAG系统优化完整路径:从30%到90%准确率的工程实践
服务器·数据库·windows
日取其半万世不竭1 小时前
Docker Compose 服务备份方案:配置、数据和数据库怎么打包
数据库·docker·容器
剑傲娇1 小时前
【计算机组成原理】 C与汇编的「对话」
服务器·开发语言·缓存
Anokata1 小时前
MYSQL 网络连接
数据库·mysql