Redis是一个开源的内存数据结构存储系统,用作数据库、缓存和消息代理。它支持多种数据结构,如字符串、哈希、列表、集合、有序集合、位图、HyperLogLog和地理空间索引。从零开始安装Redis:在Linux上运行sudo apt-get install redis-server,或者下载Windows版本。启动Redis:redis-server,然后用redis-cli连接。基本命令:SET key value设置键值,GET key获取值,DEL key删除键。常见问题解决:连接超时用redis-cli -h host -p port -a password,内存不足调整maxmemory配置。
安装与启动
在Ubuntu上安装Redis:sudo apt update && sudo apt install redis-server。启动服务:sudo systemctl start redis-server。检查状态:sudo systemctl status redis-server。远程连接:编辑/etc/redis/redis.conf,注释bind 127.0.0.1为bind 0.0.0.0,重启服务。
数据类型与命令
字符串:SET user:1:name "Jack",GET user:1:name。哈希:HSET user:1 age 25,HGETALL user:1。列表:LPUSH mylist "item1",LRANGE mylist 0 -1。集合:SADD myset "apple",SMEMBERS myset。有序集合:ZADD leaderboard 100 "player1",ZRANGE leaderboard 0 -1 WITHSCORES。
持久化配置
Redis默认开启RDB快照,save 900 1表示900秒内至少1个键变更时保存。AOF持久化:appendonly yes,更安全但占用空间大。混合使用:auto-aof-rewrite-percentage 100。常见问题:RDB文件太大,用BGREWRITEAOF后台重写。
常见使用问题解决
1. Redis内存溢出:配置maxmemory 2gb,maxmemory-policy allkeys-lru。2. 连接被拒:检查防火墙ufw allow 6379,bind配置。3. 数据丢失:开启AOF,fsync策略everysec。4. 慢查询:SLOWLOG GET查看慢命令,优化大KEY。5. 主从复制:SLAVEOF master_ip master_port。
性能优化
使用Pipeline批量命令减少RTT:redis-cli --pipe。监控:INFO commandstats,MONITOR实时命令。关闭THP:echo never > /sys/kernel/mm/transparent_hugepage/enabled。JVM客户端用Jedis或Lettuce连接池。
集群模式
Redis Cluster:redis-cli --cluster create host1:port host2:port --cluster-replicas 1。分片哈希槽16384个。常见问题:节点故障用redis-cli --cluster add-node恢复。
FAQ
Q: Redis和Memcached区别?
A: Redis支持丰富数据结构和持久化,Memcached只支持简单键值。
Q: 如何备份Redis数据?
A: 手动复制dump.rdb或用BGSAVE命令。
Q: Redis密码设置?
A: 在redis.conf加requirepass yourpassword,用redis-cli -a pass连接。
Q: 多线程支持吗?
A: Redis 6.0引入IO多线程,但核心单线程。