Redis支持五种数据类型:
- string(字符串)
- hash(哈希)
- list(列表)
- set(集合)
- zset(sorted set:有序集合)
String(字符串)
- redis最基本的类型,几乎与Memcached 一模一样的类型,key => value
- string 是二进制安全的,就是说可以包含任何数据,比如图片或者序列化的对象
- string最大能存储512MB
Hash (哈希)
- Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象
- Redis 中每个 hash 可以存储 232 – 1 键值对(40多亿)
List(列表)
- Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
- 列表最多可存储 232 – 1 元素 (4294967295, 每个列表可存储40多亿)。
Set (集合)
- Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
- Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
- 集合中最大的成员数为 232 – 1 (4294967295, 每个集合可存储40多亿个成员)。
Sorted Set(有序集合)
- Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
- 不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
- 有序集合的成员是唯一的,但分数(score)却可以重复。
- 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 – 1 (4294967295, 每个集合可存储40多亿个成员)。
性能指标
Redis 性能指标明细:
指标 | 单位 | 具体含义 |
---|---|---|
redis.aof.buffer_length | bytes | AOF 缓冲区大小 |
redis.aof.last_rewrite_time | seconds | 上次 AOF 重写(rewrite)的持续时间 |
redis.aof.rewrite | AOF 重写(rewrite)的次数 | |
redis.aof.size | bytes | AOF 当前文件大小(aof_current_size) |
redis.clients.biggest_input_buf | 当前客户端连接的最大输入缓存 | |
redis.clients.blocked | connections | 等待阻塞调用的连接数 |
redis.clients.longest_output_list | 当前客户端连接的最长输出列表 | |
redis.cpu.sys | seconds | Redis 服务器消耗的系统 CPU |
redis.cpu.sys_children | seconds | 后台进程消耗的系统 CPU |
redis.cpu.user | seconds | Redis 服务器消耗的用户 CPU |
redis.cpu.user_children | seconds | 后台进程消耗的用户 CPU |
redis.expires | keys | 已过期的 key 数量 |
redis.expires.percent | percent | 已过期的 key 百分比 |
redis.info.latency_ms | milliseconds | Redis info 命令的延迟 |
redis.key.length | 给定 key 中元素的数量 | |
redis.keys | keys | Key 的总数量 |
redis.keys.evicted | keys | 由于最大内存限制被驱逐(evict)的 key 的总数量 |
redis.keys.expired | keys | 数据库中过期的 key 的总数量 |
redis.mem.fragmentation_ratio | fractions | used_memory_rss 和 used_memory 的比率 |
redis.mem.lua | bytes | Lua 引擎使用的内存量 |
redis.mem.peak | bytes | Redis 使用的内存的峰值 |
redis.mem.rss | bytes | 系统给 Redis 分配的内存 |
redis.mem.used | bytes | 已经被 Redis 分配的内存量 |
redis.net.clients | connections | 连接的客户端数 (不包括 slaves) |
redis.net.commands | commands | 服务器运行的命令数 |
redis.net.rejected | connections | 被拒绝的连接数 |
redis.net.slaves | connections | 连接的 slave 数 |
redis.perf.latest_fork_usec | microseconds | 最新 fork 的持续时间 |
redis.persist | keys | 持久化的 key 数(redis.keys – redis.expires) |
redis.persist.percent | percent | 持久化的 key 的百分比 |
redis.pubsub.channels | 活跃的发布/订阅的频道数量 | |
redis.pubsub.patterns | 活跃的发布/订阅的模式数量 | |
redis.rdb.bgsave | 一个标志值,记录了服务器是否正在创建 RDB 文件,正在进行中是 1,否则是 0 | |
redis.rdb.changes_since_last | 上次后台保存后,RDB 的改动 | |
redis.rdb.last_bgsave_time | seconds | 最近一次 bg_save 操作的持续时间 |
redis.replication.backlog_histlen | bytes | 积压在同步缓冲区的数据量 |
redis.replication.delay | offsets | 复制延迟的偏移 |
redis.replication.last_io_seconds_ago | seconds | 距离最近一次与主服务器行通信已经过去了多少秒钟 |
redis.replication.master_link_down_since_seconds | seconds | 主从服务器连接断开了多少秒 |
redis.replication.master_repl_offset | offsets | 从 master 报告的复制偏移量 |
redis.replication.slave_repl_offset | offsets | 从 slave 报告的复制偏移量 |
redis.replication.sync | 一个标志值,如果同步正在进行,则为 1,否则为 0 | |
redis.replication.sync_left_bytes | bytes | 距离同步完成还剩多少数据量 |
redis.slowlog.micros.95percentile | microseconds | 在慢日志中,查询报告的持续时间的第 95 百分位值 |
redis.slowlog.micros.avg | microseconds | 在慢日志中,查询报告的持续时间平均值 |
redis.slowlog.micros.count | queries/second | 在慢日志中,报告的查询速率 |
redis.slowlog.micros.max | microseconds | 在慢日志中,查询报告的持续时间最大值 |
redis.slowlog.micros.median | microseconds | 在慢日志中,查询报告的持续时间中位值 |
redis.stats.keyspace_hits | keys | 在数据库中查找 key 成功的次数 |
redis.stats.keyspace_misses | keys | 在数据库中查找 key 失败的次数 |
持久化错误处理:
127.0.0.1:6379> config set stop-writes-on-bgsave-error no
或redis.conf设置参数
stop-writes-on-bgsave-error no(默认为yes)