Skip to content

Redis

简介

Redis(Remote Dictionary Server)是开源的高性能键值存储系统,基于内存运行,支持多种数据结构。常被用作缓存、分布式锁、消息队列等。

数据结构

类型说明使用场景
String字符串缓存、计数器
Hash哈希表对象存储
List列表消息队列
Set无序集合去重、标签
Sorted Set有序集合排行榜
Bitmap位图签到统计
HyperLogLog基数统计UV 统计

常用操作

bash
# String
SET user:1 "张三"
GET user:1
INCR page_view

# Hash
HSET user:1 name "张三" age 25
HGET user:1 name
HGETALL user:1

# List
LPUSH queue "task1"
RPOP queue

# Set
SADD tags "java" "spring"
SMEMBERS tags

# Sorted Set
ZADD leaderboard 100 "user1"
ZRANGE leaderboard 0 -1 WITHSCORES

持久化

RDB(快照)

按照配置的时间间隔将内存数据快照写入磁盘:

conf
save 900 1      # 900秒内至少1个key变化
save 300 10     # 300秒内至少10个key变化

AOF(追加文件)

记录每个写操作命令到日志文件:

conf
appendonly yes
appendfsync everysec  # 每秒同步一次

高可用方案

主从复制

conf
# 从节点配置
replicaof 127.0.0.1 6379

哨兵模式

conf
# sentinel.conf
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 5000

Redis Cluster

自动分片,无中心化架构,支持水平扩展。

Java 客户端(Jedis/Spring Data Redis)

java
// Jedis
Jedis jedis = new Jedis("localhost", 6379);
jedis.set("key", "value");
String value = jedis.get("key");

// Spring Data Redis
@Autowired
private RedisTemplate<String, Object> redisTemplate;
redisTemplate.opsForValue().set("key", "value");