一,简单介绍
Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案。
Redis从它的许多竞争继承来的三个主要特点:
- Redis数据库完全在内存中,使用磁盘仅用于持久性。
- 相比许多键值数据存储,Redis拥有一套较为丰富的数据类型。
- Redis可以将数据复制到任意数量的从服务器。
Redis 优势:
- 异常快速:Redis的速度非常快,每秒能执行约11万集合,每秒约81000+条记录。
- 支持丰富的数据类型:Redis支持最大多数开发人员已经知道像列表,集合,有序集合,散列数据类型。这使得它非常容易解决各种各样的问题,因为我们知道哪些问题是可以处理通过它的数据类型更好。
- 操作都是原子性:所有Redis操作是原子的,这保证了如果两个客户端同时访问的Redis服务器将获得更新后的值。
- 多功能实用工具:Redis是一个多实用的工具,可以在多个用例如缓存,消息,队列使用(Redis原生支持发布/订阅),任何短暂的数据,应用程序,如Web应用程序会话,网页命中计数等。
二,适用场景
1,取最新N个数据操作
比如典型的取你网站的最新文章,我们可以将最新的5000条评论的ID放在Redis的List集合中,并将超出集合部分从数据库获取。
2,排行榜应用
这个需求与上面需求的不同之处在于,前面操作以时间为权重,这个是以某个条件为权重,比如按顶的次数排序,这时候就需要我们的sortedset出马了,将你要排序的值设置成sorted set的score,将具体的数据设置成相应的value,每次只需要执行一条ZADD命令即可。
3,需要精准设定过期时间的应用
比如你可以把上面说到的sortedset的score的值设置成过期时间的时间戳,那么就可以简单地通过过期时间排序,定时清除过期数据了,不仅是清除Redis中的过期数据,你完全可以把Redis里这个过期时间当成是数据库中数据的索引,用Redis来找出那些数据需要过期删除,然后再精准地从数据库中删除相应的记录。
4,计数器应用
Redis的命令都是原子性的,你可以轻松利用INCR,DECR命令来构建计数器系统。
5,uniq操作,获取某段时间所有数据排重值
这个使用Redis的set的数据结构最合适了,只需要不断地将数据往set中仍就行了,set为集合,所以会自动进行排序。
6,pub/sub构建实时消息系统
Redis的pub/sub可以构建实时消息系统。