1. 什么是 Redis
Redis
(Remote Dictionary Server
)远程字典服务器,是用C
语言开发的一个开源的高性能键值对(key-value
)内存数据库。- 它提供了五种数据类型来存储值:
字符串类型、散列类型、列表类型、集合类型、有序集合类型
- 它是一种
NoSQL
数据存储。
2. Redis发展历史
2008
年,意大利的一家创业公司 Merzia
推出了一款基于 MySQL
的网站实时统计系统 LLOOGG
,然而没过多久该公司的创始人 Salvatore Sanfilippo( antirez
)便对 MySQL
的性能感到失望,于是他决定亲自为 LLOOGG
量身定做一个数据库,并于 2009
年开发完成,这个数据库就是 Redis
。
Redis2.6
Redis2.6
在 2012
年正式发布,主要特性如下:
服务端支持 Lua
脚本、去掉虚拟内存相关功能、键的过期时间支持毫秒、从节点提供只读功能、两个新的位图命令:bitcount
和 bitop
、重构了大量的核心代码、优化了大量的命令。
Redis2.8
Redis2.8
在 2013年11月22日
正式发布,主要特性如下:
添加部分主从复制(增量复制)的功能、可以用 bind
命令绑定多个 IP
地址、Redis
设置了明显的进程名、发布订阅添加了 pubsub
命令、Redis Sentinel
生产可用
Redis3.0
Redis3.0
在 2015年4月1日
正式发布,相比于 Redis2.8
主要特性如下:
Redis Cluster:
Redis
的官方分布式实现(Ruby
)、全新的对象编码结果、lru算法大幅提升、部分命令的性能提升
Redis3.2
Redis3.2
在 2016年5月6日
正式发布,相比于 Redis3.0
主要特征如下:
添加 GEO
相关功能、SDS
在速度和节省空间上都做了优化、新的 List
编码类型:quicklist
、从节点读取过期数据保证一致性、Lua
脚本功能增强等
Redis4.0
Redis4.0
在 2017年7月
发布,主要特性如下:
提供了模块系统,方便第三方开发者拓展 Redis
的功能、PSYNC2.0
:优化了之前版本中,主从节点切换必然引起全量复制的问题、提供了新的缓存剔除算法:LFU(Last Frequently Used)
,并对已有算法进行了优化、提供了 RDB-AOF
混合持久化格式等。
3. Redis 应用场景
- 缓存使用,减轻
DB
压力 DB
使用,用于临时存储数据(字典表,购买记录)- 解决分布式场景下
Session
分离问题(登录信息) - 任务队列(秒杀、抢红包等等) 乐观锁
- 应用排行榜
zset
- 签到
bitmap
- 分布式锁
- 冷热数据交换