Redis是一种基于键值对的Nosql数据库;
支持类型包括String、hash、list、set、zset、bitmaps、hyperloglog、GEO等多种数据结构和算法组合。
Redis会将所有数据保存到内存中,所以它的读写速度非常快。
Redis还可以将内存的数据利用快照和日志的形式保存在硬盘上。
Redis提供键过期、发布订阅、事务、流水线、Lua脚本等附加功能
Redis速度快
- Redis所有数据保存在内存中,这是Redis快的主要原因;
- Redis使用C语言实现,C语言里操作系统更近,执行速度相对会更快;
- Redis使用单线程,预防了多线程可能的产生的竞争问题;
- Redis作者对Redis源码的集性能和优雅于一身的开源代码;
Redis丰富的功能
- 提供了键过期:可以用于实现缓存
- 发布订阅功能,可以实现消息系统
- 支持Lua脚本功能,可以利用Lua创造新的Redis命令
- 提供简单的事务支持,能在一定程度保证事务特性
- 流水线功能,这样客户端能将一批命令一次性传递到Redis,减少网络的开销
Redis持久化
- RDB内存快照的方式将内存中的数据保存到硬盘中。
- AOF追加日志的方式将内存中的数据保存到硬盘中。
Redis客户端支持语言多
Redis主从复制
Redis高可用和分布式
- Redis sentinel哨兵机制保证Redis节点的故障发现和故障自动转移;
- Redis cluster实现了Redis真正的分布式实现,提供了高可用、读写和容量的扩展性;
Redis应用场景
- 缓存:缓存数据到内存加快访问,设置键值对过期时间;
- 排行榜系统:Redis提供列表和有序集合数据结构
- 计数器应用:incre自增命令
- 社交网络:针对社交中“赞”“粉丝”“推送”“喜好”等数据存储到Redis中
- 消息队列系统:Redis提供的发布订阅和阻塞队列功能;
Redis不适用做什么
- 不适合存储大量数据
- 不适合存储冷数据,即很少有人访问的数据
Redis常用命令
- redis-server:启动redis
- 默认启动方式:redis-server
- 运行启动:redis-server --configKey1 configValue1 --configKey2 configValue2
- 配置文件启动:redis-server /opt/redis/redis.conf
- redis-cli:客户端连接redis
- redis-banchmark:redis基准测试工具
- redis-check-aof:redis aof持久化文件检测和修复工具
- redis-check-dump:redis rdb持久化文件检测和修复工具
- redis-sentinel:启动redis哨兵
Redis停止服务
- 优雅关闭:redis-cli shutdown
分为两步:断开和客户端的连接、持久化文件生成
- 强行关闭:kill -9
不会做持久化,并且会造成缓冲区等资源不能被优雅的关闭,极端情况下回造成aof和复制丢失数据的情况。