Redis 是一个开源的内存数据结构存储,用作数据库、缓存和消息代理。它支持多种数据结构,如字符串、哈希、列表、集合、有序集合、位图、超日志、地理空间索引和流。Redis 内置了复制、Lua 脚本、LRU 驱逐、事务和不同级别的磁盘持久化,并通过 Redis Sentinel 和 Redis Cluster 提供高可用性和自动分区。
Redis 的主要特点
高性能:Redis 是内存数据库,读写速度非常快。
丰富的数据类型:支持多种数据结构,适用于不同的应用场景。
持久化:支持将数据持久化到磁盘,防止数据丢失。
复制:支持主从复制,数据可以在多个 Redis 实例之间复制。
高可用性:通过 Redis Sentinel 提供监控、通知和自动故障转移。
分布式:通过 Redis Cluster 提供自动分区和高可用性。
事务:支持事务,可以一次执行多个命令。
Redis 的应用场景
缓存:Redis 作为缓存,可以提高数据读写速度。
计数器:Redis 的原子性操作可以实现计数器功能。
消息队列:Redis 的列表结构可以实现消息队列。
排行榜:Redis 的有序集合可以实现排行榜功能。
会话管理:Redis 可以存储会话数据,实现会话管理。
分布式锁:Redis 的分布式锁可以实现分布式系统的并发控制。
Redis 配置
Redis 的配置文件位于 /etc/redis/redis.conf
,可以通过修改配置文件来配置 Redis。
常用的配置项如下
daemonize
: 是否以守护进程模式运行,默认为 no。
port
: Redis 服务器监听的端口,默认为 6379。
bind
: Redis 服务器监听的地址,默认为 0.0.0.0。
timeout
: 客户端闲置多长时间后关闭连接,默认为 0,表示不关闭。
loglevel
: 日志级别,可选值为 debug、verbose、notice、warning,默认为 notice。
logfile
: 日志文件路径,默认为 stdout。
databases
: 数据库数量,默认为 16。
save
: 持久化配置,格式为 save 秒数 修改次数,默认为 save 900 1。
rdbcompression
: 是否压缩 rdb 文件,默认为 yes。
dbfilename
: rdb 文件名,默认为 dump.rdb。
dir
: rdb 文件保存路径,默认为 /var/lib/redis。
maxmemory
: 最大内存限制,默认为 0,表示不限制。
maxmemory-policy
: 内存超出限制后的处理策略,可选值为 volatile-lru、allkeys-lru、volatile-random、allkeys-random、volatile-ttl,默认为 noeviction。
appendonly
: 是否开启 aof 持久化,默认为 no。
appendfilename
: aof 文件名,默认为 appendonly.aof。
appendfsync
: aof 持久化策略,可选值为 always、everysec、no,默认为 everysec。
requirepass
: 设置密码,默认为不设置。
maxclients
: 最大客户端连接数,默认为 10000。
maxmemory-samples
: LRU 算法采样数,默认为 5。
slaveof
: 主从复制配置,格式为 slaveof 主机名 端口号。
masterauth
: 主从复制密码。
cluster-enabled
: 是否开启集群模式,默认为 no。
cluster-config-file
: 集群配置文件,默认为 nodes.conf。
cluster-node-timeout
: 集群节点超时时间,默认为 15000。
cluster-slave-validity-factor
: 集群从节点复制因子,默认为 10。
cluster-migration-barrier
: 集群迁移屏障,默认为 1。
cluster-require-full-coverage
: 集群是否需要所有槽被覆盖,默认为 yes。
cluster-replica-no-failover
: 集群从节点是否可以进行故障转移,默认为 no。
cluster-announce-ip
: 集群节点广播地址。
cluster-announce-port
: 集群节点广播端口。
cluster-announce-bus-port
: 集群节点总线端口。