Redis是一个高性能的键值存储数据库,支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。快速学会Redis的使用,从安装开始:下载Redis安装包,Windows用户可使用Redis for Windows,Linux用户用apt或yum安装。启动Redis服务器:redis-server redis.conf,然后用redis-cli连接客户端。基本命令:SET key value设置键值,GET key获取值,DEL key删除键。快速上手教程:1. 字符串操作SET/GET,2. 列表LPUSH/RPOP,3. Hash HSET/HGET,4. 发布订阅PUBSUB,5. 持久化RDB/AOF配置。常见问题:连接超时调大timeout,内存不足用maxmemory-policy allkeys-lru。
安装与启动
在Linux上安装Redis:sudo apt update && sudo apt install redis-server。启动:sudo service redis-server start。测试:redis-cli ping 返回PONG即成功。Windows下载msopen.tech/redis-stack,解压运行redis-server.exe。配置redis.conf:bind 127.0.0.1 port 6379 requirepass yourpassword。
数据类型与命令
字符串:SET user:1:name "Jack" GET user:1:name。哈希:HSET user:1 age 25 HGETALL user:1。列表:LPUSH mylist "item1" LPOP mylist。集合:SADD myset "member1" SMEMBERS myset。有序集合:ZADD leaderboard 100 "player1" ZRANGE leaderboard 0 -1 WITHSCORES。事务:MULTI EXEC DISCARD。
持久化与备份
RDB快照:save 900 1 save 300 10 save 60 10000。AOF追加:appendonly yes appendfsync everysec。混合持久化:aof-use-rdb-preamble yes。备份:BGSAVE手动后台保存,CONFIG GET dir查看数据目录。
集群与哨兵
哨兵高可用:sentinel monitor mymaster 127.0.0.1 6379 2。集群模式:redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 ... --cluster-replicas 1。槽位:CLUSTER SLOTS查看。
性能优化
慢查询:slowlog get 10 配置slowlog-log-slower-than 10000。内存优化:maxmemory 2gb maxmemory-policy volatile-lru。Pipeline批量命令减少RTT:conn.pipeline()。Lua脚本:EVAL "return redis.call('set',KEYS[1],ARGV[1])" 1 mykey myvalue。
常见问题解决
1. MISCONF Redis is configured to save RDB snapshots问题:CONFIG SET stop-writes-on-bgsave-error no。2. Redis端口被占用:netstat -tlnp | grep 6379 kill进程。3. 连接被拒绝:防火墙开放6379,bind 0.0.0.0。4. Fork失败内存不足:overcommit_memory 1 vm.overcommit_memory 1。5. 数据丢失:开启AOF持久化。
进阶使用
HyperLogLog:PFADD hll key1 key2 PFCOUNT hll。Bitmap:SETBIT key 7 1 BITCOUNT key。GEO:GEOADD Sicily 13.361389 38.115556 "Palermo" GEORADIUS Sicily 15 37 200 km。Stream:XADD mystream * field value XREAD COUNT 1 STREAMS mystream 0。
FAQ
Q: Redis和Memcached区别?
A: Redis支持丰富数据结构、持久化、集群,Memcached仅字符串无持久化。
Q: 如何设置密码?
A: redis.conf requirepass password,客户端AUTH password。
Q: 大KEY怎么处理?
A: scan 0 MATCH '*pattern*' COUNT 100逐步扫描redis-cli --bigkeys。
Q: 主从复制配置?
A: 从库slaveof 192.168.1.1 6379。