redis简介
Redis 全称是 Remote Dictionary Server,是完全开源免费的,是一个高性能的key-value类型的内存数据库。
redis特点
1.速度快,因为数据存在内存中,读的速度是 110000 次 /s, 写的速度是 81000 次 /s。
2.支持丰富数据类型string、list、set、zset(有序集合)、hash。
3.支持原子性操作,对数据的修改要么全部执行,要么全部不执行。支持事务,事务中任意命令行失败,其余命令依然被执行, Redis 事务不保证原子性,也不支持回滚。
4.丰富的特性:可用于缓存、队列、消息通知(支持 publish/subscribe 通知),按key设置过期时间,过期后将会自动删除,具体淘汰策略有:
4.1.volatile-lru:从已经设置过期时间的数据集中,挑选最近最少使用的数据淘汰
4.2.volatile-ttl:从已经设置过期时间的数据集中,挑选即将要过期的数据淘汰
4.3.volatile-random:从已经设置过期时间的数据集中,随机挑选数据淘汰
4.4.allkeys-lru:从所有的数据集中,挑选最近最少使用的数据淘汰
4.5.allkeys-random:从所有的数据集中,随机挑选数据淘汰
4.6.no-enviction:禁止淘汰数据
具体过期键的策略有:定时删除(缓存过期时间到就删除,创建timer耗CPU),惰性删除(获取的时候检查,不获取一直留在内存,对内存不友好),定期删除(CPU和内存的折中方案)
5.支持数据持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载使用。
6.支持高可架构,redis部署架构主从、哨兵、集群等部署方案
redis使用场景
1.缓存热数据
由于redis将相关的数据库数据加载到内存中,所以页面加载热数据速度很快。
2.排行榜/计算器
Redis在内存中对数字进行递增或递减的操作实现的非常好。集合(Set)和有序集合(Sorted Set),用于实现排行榜/计算器相关功能会相对简单
3.队列
Reids提供 了list 和 set数量类型,可以作为常用队列来使用,就类似于本地程序语言(如java)对delayQueue的 push/pop 操作。
4.分布式锁
通过redis能够实现分布式锁,用于大型高并发操作等。