0%

Redis总结(1)——基础知识

简介

Redis是一种基于键值对(key-value)的 NoSQL 数据库,与其他不同的是,Redis 中的值可以是由 string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、HyperLogLog(基数统计)、GEO(地理信息定位)等多种数据结构和算法组成,提供了快照、日志等存储,键过期、发布订阅、事务、流水线、Lua 脚本等附加功能。

Redis 特性

速度快

  • 所有数据存放在内存中
  • C 语言实现
  • 单线程架构,避免竞争
  • 源码质量高

基于键值对的数据结构服务器

  • 全称:Remote Dictionary Server
  • 5种数据结构:string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)
  • 字符串基础上演变出:Bitmaps(位图)、HyperLogLog(基数统计)
  • 3.2加入:GEO(地理信息定位)

丰富的功能

  • 过期键:实现缓存
  • 发布订阅:消息系统
  • Lua 脚本:创造新的命令
  • 事务功能:一定程度上保证数据特性
  • 流水线(Pipeline):减少网络开销

简单稳定

  • 源码很少,开发、运维能够完全吃透
  • 单线程模型,处理简单,开发简单
  • 不依赖操作系统的类库

客户端语言多

  • 提供简单的 TCP 通信协议
  • 认可度高,覆盖主流语言

持久化

  • RDB
  • AOF

主从复制

  • 多 Redis 副本

高可用和分布式

  • Sentinel:故障发现、故障转移
  • Redis Cluster:真正的分布式实现,高可用、读写和容量的扩展性

Redis 使用场景

Redis 可以做什么

  • 缓存:减少数据源压力,灵活控制最大内存和淘汰策略
  • 排行榜系统:基于列表和有序集合构建
  • 计数器应用:播放数、浏览量等数据,保证实时性和高并发
  • 社交网络:赞/踩、粉丝、共同好友、推送、下拉刷新等
  • 消息队列:基于发布订阅和阻塞队列,实现业务解耦、削峰

Redis 不可以做什么

  • 大数据量:成本高
  • 冷数据使用:浪费