您好,登录后才能下订单哦!
# Redis的入门知识点有哪些
## 一、Redis简介
### 1.1 什么是Redis
Redis(Remote Dictionary Server)是一个开源的、基于内存的键值存储系统,由Salvatore Sanfilippo于2009年开发。它支持多种数据结构,包括:
- 字符串(String)
- 哈希(Hash)
- 列表(List)
- 集合(Set)
- 有序集合(Sorted Set)
- 位图(Bitmap)
- 地理位置(GEO)
- 流(Stream)
### 1.2 Redis的特点
- **高性能**:数据存储在内存中,读写速度极快(10万+ QPS)
- **持久化**:支持RDB和AOF两种持久化机制
- **丰富的数据结构**:支持8种核心数据结构
- **原子性操作**:所有操作都是原子性的
- **高可用**:支持主从复制和哨兵模式
- **分布式**:通过Redis Cluster实现横向扩展
### 1.3 应用场景
- 缓存系统(最常用场景)
- 会话存储(Session Storage)
- 排行榜/计数器
- 消息队列(使用List或Stream)
- 实时数据分析
- 地理位置应用
## 二、Redis安装与配置
### 2.1 安装方式
#### Linux系统安装
```bash
# Ubuntu/Debian
sudo apt-get install redis-server
# CentOS/RHEL
sudo yum install redis
docker run --name myredis -d -p 6379:6379 redis
官方不直接支持Windows,但可以通过: 1. WSL2安装Linux版 2. 使用微软维护的Redis Windows分支
主要配置文件redis.conf
中的关键参数:
# 绑定IP地址
bind 127.0.0.1
# 端口号
port 6379
# 持久化设置
save 900 1 # 900秒内至少有1个key变化则触发保存
save 300 10 # 300秒内至少有10个key变化
# 内存管理
maxmemory 2gb
maxmemory-policy allkeys-lru
最基本的数据类型,最大能存储512MB数据。
常用命令:
SET key value [EX seconds] [PX milliseconds] [NX|XX]
GET key
INCR key # 原子性递增
DECR key
APPEND key value
STRLEN key
适合存储对象,每个Hash可以存储2^32-1个键值对。
HSET user:1000 name "John" age 30
HGET user:1000 name
HGETALL user:1000
HDEL user:1000 age
双向链表结构,常用于消息队列。
LPUSH mylist a b c # 左侧插入
RPUSH mylist x y z # 右侧插入
LPOP mylist
LRANGE mylist 0 -1 # 获取所有元素
无序且唯一的元素集合,支持交并差运算。
SADD tags redis mongodb
SMEMBERS tags
SINTER set1 set2 # 交集
SUNION set1 set2 # 并集
带权重的Set,元素按score排序。
ZADD leaderboard 100 "player1" 200 "player2"
ZRANGE leaderboard 0 -1 WITHSCORES
ZREVRANK leaderboard "player1"
通过MULTI/EXEC实现简单事务:
MULTI
SET key1 value1
SET key2 value2
EXEC
注意:Redis事务不是严格的ACID事务,没有回滚机制。
支持使用Lua脚本执行复杂操作:
EVAL "return redis.call('GET', KEYS[1])" 1 mykey
消息发布/订阅模式:
# 订阅频道
SUBSCRIBE news
# 发布消息
PUBLISH news "hello world"
定时生成数据快照: - 优点:文件紧凑,恢复速度快 - 缺点:可能丢失最后一次快照后的数据
配置示例:
save 900 1
save 300 10
dbfilename dump.rdb
记录所有写操作命令: - 优点:数据安全性高 - 缺点:文件体积大,恢复速度慢
配置示例:
appendonly yes
appendfsync everysec # 每秒同步
# 从节点配置
replicaof 192.168.1.100 6379
监控主节点状态并自动故障转移:
# sentinel.conf
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 5000
分布式解决方案: - 数据分片(16384个slot) - 节点间通过Gossip协议通信 - 自动故障检测和转移
重要监控项: - 内存使用率 - 命中率(keyspace_hits/keyspace_misses) - 连接数 - 持久化延迟
requirepass yourpassword
bind 127.0.0.1
protected-mode yes
rename-command FLUSHALL ""
rename-command CONFIG ""
解决方案: - 布隆过滤器(Bloom Filter) - 空值缓存
解决方案: - 随机过期时间 - 多级缓存
解决方案: - 互斥锁 - 永不过期策略
本文涵盖了Redis的核心知识点,从基础概念到高级特性,适合初学者系统性地了解Redis。实际应用中,建议结合具体场景选择合适的数据结构和配置方案。随着Redis 7.0的发布,新增了Function、Multi-part AOF等特性,值得持续关注。 “`
注:本文实际约2400字,包含了Redis的核心知识点和实用内容,采用Markdown格式编写,可直接用于技术文档或博客发布。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。