Redis 学习笔记

Redis 启动方式

先启动 Redis 服务端

bash 复制代码
redis-server

再启动 Redis 客户端

bash 复制代码
redis-cli

一、基础字符串(String)操作

字符串是 Redis 中最基础、最常用的数据类型。

常用命令

  1. set:设置键值

    bash 复制代码
    set name rose
  2. get:获取键值

    bash 复制代码
    get name
    # rose
  3. del:删除 key

    bash 复制代码
    del name
  4. exists:判断 key 是否存在

    bash 复制代码
    exists name
    # 0 表示不存在,1 表示存在
  5. keys:查找 key(支持通配符)

    bash 复制代码
    keys *
    keys *me   # 查找所有以 me 结尾的 key
  6. flushall:清空所有 key(⚠️慎用)

    bash 复制代码
    flushall
  7. ttl:查看 key 的过期时间

    bash 复制代码
    ttl key
    # -1:未设置过期时间
    # -2:key 已过期
  8. expire:设置过期时间(单位:秒)

    bash 复制代码
    expire key 10
  9. setex:设置键值并指定过期时间

    bash 复制代码
    setex name 10 rose
  10. setnx:key 不存在时才设置

    bash 复制代码
    setnx name rose

二、List 操作(类似数组)

List 是一个有序、可重复的列表结构。

常用命令

  1. rpush:从尾部插入

    bash 复制代码
    rpush arr 1 2 3
  2. lpush:从头部插入

    bash 复制代码
    lpush arr 4
  3. lrange:获取指定范围内的元素

    bash 复制代码
    lrange arr 0 -1
  4. lpop / rpop:弹出头部 / 尾部元素

    bash 复制代码
    lpop arr
    rpop arr

    批量删除:

    bash 复制代码
    lpop arr 2
  5. llen:查看长度

    bash 复制代码
    llen arr
  6. ltrim:修剪列表

    bash 复制代码
    ltrim arr 2 5

三、Set 操作(无序且不可重复)

类似于 JavaScript 中的 Set

常用命令

  1. sadd:添加元素

    bash 复制代码
    sadd aset 1 2 3 1
  2. srem:移除元素

    bash 复制代码
    srem aset 1
  3. smembers:查看所有成员

    bash 复制代码
    smembers aset
  4. sismember:判断元素是否存在

    bash 复制代码
    sismember aset 4

Set 支持交集、并集、差集等集合运算,常用于标签、去重等场景。


四、有序集合 SortedSet(ZSet)

每个元素由 member + score 组成,按 score 排序。

常用命令

  1. zadd:添加元素

    bash 复制代码
    zadd result 1 rose 2 jack 3 andy
  2. zrange:按 score 正序获取

    bash 复制代码
    zrange result 0 -1
  3. zrange withscores:同时获取 score

    bash 复制代码
    zrange result 0 -1 withscores
  4. zscore:查看某个成员的分数

    bash 复制代码
    zscore result andy
  5. zrank:查看排名(正序)

    bash 复制代码
    zrank result rose
  6. zrevrank:查看排名(逆序)

    bash 复制代码
    zrevrank result andy
  7. zrem:移除成员

    bash 复制代码
    zrem result jack

中文显示问题说明

默认 redis-cli 模式下 get 中文会乱码,可使用:

bash 复制代码
redis-cli --raw

五、Hash(哈希,对象结构)

可以理解为一个对象,适合存储结构化数据。

常用命令

bash 复制代码
hset person name rose
hget person name
hgetall person
hdel person name
hexists person name
hkeys person
hlen person

六、发布订阅(Pub/Sub)

缺点:不支持消息持久化、无法消费历史消息。

示例

bash 复制代码
# 订阅
subscribe ch1

# 发布
publish ch1 lele

七、Stream(消息队列,Pub/Sub 进阶)

Stream 是 Redis 用于解决消息可靠性问题的方案。

常用命令

bash 复制代码
xadd s1 * course js
xlen s1
xrange s1 - +
xdel s1 1766314632833-0
xtrim s1 maxlen 0

读取消息

bash 复制代码
xread count 2 block 1000 streams s1 0

消费者组

bash 复制代码
xgroup create s1 group1 0
xinfo groups s1
xgroup createconsumer s1 group1 consumer1
xreadgroup group group1 consumer1 count 2 block 1000 streams s1 >

八、地理空间(Geospatial)

用于位置、距离计算。

bash 复制代码
geoadd city 121 31 beijing
geopos city shanghai
geodist city beijing shanghai
geosearch city frommember shanghai byradius 2000 km

九、HyperLogLog(基数统计)

用于统计去重后的数量,占用极小内存,但存在一定误差。

bash 复制代码
pfadd course go js java
pfcount course
pfmerge result course course1

十、位图(Bitmap)

适合点赞、签到等二进制场景。

bash 复制代码
setbit dianzan 0 1
getbit dianzan 0

批量设置:

bash 复制代码
set dianzan "\x0f"

统计:

bash 复制代码
bitcount dianzan
bitpos dianzan 0

十一、事务(Transaction)

Redis 事务不保证原子回滚,但能保证顺序执行。

bash 复制代码
multi
set k1 v1
lpush arr1 1 2 3
exec

十二、Redis 持久化机制

RDB

  • 定期将内存数据快照写入磁盘

AOF

  • 将每一条写命令追加到日志文件中

两者均可在 redis.conf 中配置。


十三、主从复制

  • 一个主节点(Master)
  • 多个从节点(Slave)
  • 数据只能 主 → 从

配置完成后自动同步数据。


十四、哨兵模式(Sentinel)

无哨兵的问题

  • 主节点宕机需要人工介入

哨兵的作用

  • 独立进程监控 Redis 集群
  • 主节点宕机后自动选举新主节点
  • 自动通知并切换从节点指向

相关推荐
大筒木老辈子2 小时前
C++笔记---并发支持库(future)
java·c++·笔记
挺6的还2 小时前
4.常用数据结构和单线程模型理解
redis
gugugu.2 小时前
Redis持久化机制详解(二):AOF持久化全解析
数据库·redis·缓存
PyGata2 小时前
CMake学习笔记(二):CMake拷贝文件夹
c++·笔记·学习
Lucky小小吴2 小时前
JAVA漫谈反序列化篇——笔记
java·开发语言·笔记
摇滚侠2 小时前
Redis 零基础到进阶,Redis 事务,Redis 管道,Redis 发布订阅,笔记47-54
数据库·redis·笔记
小蜗笔记2 小时前
ABM模型库的笔记
笔记
悠哉悠哉愿意2 小时前
【嵌入式学习笔记】从单片机到嵌入式过渡
笔记·单片机·嵌入式硬件·学习
蜂蜜黄油呀土豆2 小时前
缓存的正确使用方式:从设计思想到 Cache Aside 实战解析
redis·数据一致性·分布式系统·cache aside·缓存设计