初始Redis
Redis是一种基于键值对的NoSQL数据库,Redis中的值可以是string、hash、list、set、zset、Bitmaps、HyperLogLog、GEO等多种类型。
Redis的8个特特性
1、速度快
RW速度大约在10万/秒左右,数据存放内存,C语言设计,单线程架构,避免线程争用
2、基于键值对的数据结构服务器
Redis全称是REmote DIctionary Server,主要提供5种数据结构-字符串、哈希、列表、集合、有序集合,并从字符串演变出了位图和HyperLogLog的结构,同时随着LBS的发展,从3.2开始引入了GEO(地理信息定位)功能
3、丰富的功能
通过键过期功能实现缓存、通过发布订阅功能实现消息系统、支持Lua脚本创造新的Redis命令、提供简单事务功能保证事务特性、提供流水线Pipeline功能实现客户端一次传输一批命令,减少网络开销
4、简单稳定
远吗少,早期版本只有2万行,3.0版本添加了集群特性也只有5万行代码,单线程模型使得服务端处理模型变得简单,容易进行客户端开发,不需要依赖操作系统实现事务处理
5、客户端语言多
通过TCP通信协议接入各种语言的客户端
6、持久化
提供RDF和AOF两种持久化策略
7、主从复制
一主多从
8、高可用和分布式
Redis2.8提供了Sentinel高可用实现,保证Redis节点的故障发现和自动转移。3.0开始提供集群和分布式实现Redis Cluster,提供了高可用、读写和容量的扩展
Redis使用场景
缓存:键值过去的时间设置、最大内存的灵活设置和内存溢出后的淘汰策略
排行榜:合理使用列表和有序集合数据结构
计数器:天然支持且性能非常好
社交网络:支持赞/踩、粉丝、共同好友/喜好、推送、下拉刷新,和传统数据库相比,Redis提供的数据结构相对容易实现
消息队列:Redis提供了发布订阅功能和阻塞队列
Redis不适合的使用场景
不适合放冷数据
Redis的配置、启动、操作和关闭
Redis可执行文件说明:
redis-server:启动redis
redis-cli:redis命令行客户端
redis-benchmark:redis基准测试工具
redis-check-aof:AOF持久化文件检测和修复工具
redis-check-dump:RDB持久化文件检测和修复工具
redis-sentinel:启动Redis Sentinel
Redis建议使用配置文件启动,或指定端口号和配置名和值启动
redis-server /opt/redis/redis.conf
redis-server --configKey configValue1 --configKey2 configValue2 --port Port
Redis有60多个配置,基础配置如下:
- port:端口
- logfile:日志文件
- dir:工作目录(存放持久化文件和日志文件)
- daemonize:是否以守护进程模式启动Redis
redis-cli可以以两种方式连接Redis服务器:
redis-cli -h {host} -p {port},然后进行交互
redis-cli -h {host} -p {port} {command}直接交互
当没有-h参数,默认连接127.0.0.1,如果没有-p参数,默认连接6379端口
停止Redis服务
redis-cli shutdown
这是一种优雅的关闭方式,会断开与客户端的连接、持久化文件生成,如果使用kill -9强制杀死进程,不会持久化操作,还会造成缓冲区等资源不能优雅关闭,极端情况会造成AOF和复制丢失数据
shutdown可以输入参数,表示在关闭Redis前,是否生成持久化文件
Redis的版本号借鉴了Linux,版本号第二位如果是奇数,则为非稳定版本,偶数为稳定版本,生产环境应当使用偶数版本
Redis重大版本
2.8
bind多地址
sentinel哨兵生产可用
添加部分主从复制功能
3.0
增加Redis的官方分布式实现:Redis Cluster
embedded编码,优化小对象内存访问,速度大幅提升
migrate连接缓存
3.2
添加GEO相关功能
新的List编码类型:quicklist
4.0
PSYNC2.0,修复之前版本主从节点切换引起全量复制问题
非阻塞del和flush命令,解决删除bigkey可能造成的Redis阻塞
提供了RDB-AOF混合持久化格式,充分利用了AOF和RDB的各自优势
提供memory命令,实现对内存更为全民的监控统计