Redis 启动方式
先启动 Redis 服务端:
bash
redis-server
再启动 Redis 客户端:
bash
redis-cli
一、基础字符串(String)操作
字符串是 Redis 中最基础、最常用的数据类型。
常用命令
-
set:设置键值
bashset name rose -
get:获取键值
bashget name # rose -
del:删除 key
bashdel name -
exists:判断 key 是否存在
bashexists name # 0 表示不存在,1 表示存在 -
keys:查找 key(支持通配符)
bashkeys * keys *me # 查找所有以 me 结尾的 key -
flushall:清空所有 key(⚠️慎用)
bashflushall -
ttl:查看 key 的过期时间
bashttl key # -1:未设置过期时间 # -2:key 已过期 -
expire:设置过期时间(单位:秒)
bashexpire key 10 -
setex:设置键值并指定过期时间
bashsetex name 10 rose -
setnx:key 不存在时才设置
bashsetnx name rose
二、List 操作(类似数组)
List 是一个有序、可重复的列表结构。
常用命令
-
rpush:从尾部插入
bashrpush arr 1 2 3 -
lpush:从头部插入
bashlpush arr 4 -
lrange:获取指定范围内的元素
bashlrange arr 0 -1 -
lpop / rpop:弹出头部 / 尾部元素
bashlpop arr rpop arr批量删除:
bashlpop arr 2 -
llen:查看长度
bashllen arr -
ltrim:修剪列表
bashltrim arr 2 5
三、Set 操作(无序且不可重复)
类似于 JavaScript 中的 Set。
常用命令
-
sadd:添加元素
bashsadd aset 1 2 3 1 -
srem:移除元素
bashsrem aset 1 -
smembers:查看所有成员
bashsmembers aset -
sismember:判断元素是否存在
bashsismember aset 4
Set 支持交集、并集、差集等集合运算,常用于标签、去重等场景。
四、有序集合 SortedSet(ZSet)
每个元素由 member + score 组成,按 score 排序。
常用命令
-
zadd:添加元素
bashzadd result 1 rose 2 jack 3 andy -
zrange:按 score 正序获取
bashzrange result 0 -1 -
zrange withscores:同时获取 score
bashzrange result 0 -1 withscores -
zscore:查看某个成员的分数
bashzscore result andy -
zrank:查看排名(正序)
bashzrank result rose -
zrevrank:查看排名(逆序)
bashzrevrank result andy -
zrem:移除成员
bashzrem 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 集群
- 主节点宕机后自动选举新主节点
- 自动通知并切换从节点指向