Redis系列之一:Redis简介

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liu_005/article/details/80154167
写在前面的话:

笔者在最近工作中开始接触Redis,并将Redis应用于项目中。在慢慢深入学习和使用的过程中,总结和整理了一些关于Redis的资料,希望能和大家一起分享、一起交流、共同进步。

《Redis系列》将从Redis的简单介绍到Redis中的基础知识(如数据类型、持久化、常用命令等),从Redis的安装到通过Java访问Redis,从Redis与Spring集成到Redis的优化。

Redis 是一个开源(BSD许可)的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如字符串、 散列、列表、集合、有序集合与范围查询、 bitmaps、 hyperloglogs和地理空间索引半径查询。 Redis 内置了 复制、LUA脚本、 LRU驱动事件、事务和不同级别的磁盘持久化, 并通过Redis哨兵和集群提供高可用性和性能。

一、 Redis与关系型数据库

Redis是目前比较主流的内存数据库,与之对应的就是传统的关系型数据库。这两种数据库并不能简单的去论述孰优孰劣,在笔者看来,更多的是适用场景的不同。内存数据库更倾向于提高数据操作效率,而关系型数据库更倾向于数据的持久化存储,在开发中更多时候是将两种数据库结合使用。

二、 Redis与Memcached

Redis 和 Memcache 都是基于内存的数据存储系统。Memcached是高性能分布式内存缓存服务;Redis是一个开源的key-value存储系统。Redis的作者Salvatore Sanfilippo曾经对这两种基于内存的数据存储系统进行过比较:

Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的GET/SET一样高效。所以,如果需要缓存能够支持更复杂的结构和操作,那么Redis会是不错的选择;

内存使用效率对比:使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached;

性能对比:由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。

三、 Redis的使用场景

1、缓存
缓存机制几乎在所有的大型网站都有使用, 合理地使用缓存不仅可以加快数据的访问速度, 而且能够有效地降低后端数据源的压力。 Redis提供了键值过期时间设置, 并且也提供了灵活控制最大内存和内存溢出后的淘汰策略。

2、消息队列系统
消息队列系统可以说是一个大型网站的必备基础组件, 因为其具有业务解耦、 非实时业务削峰等特性。 Redis提供了发布订阅功能和阻塞队列的功能, 虽然和专业的消息队列比还不够足够强大, 但是对于一般的消息队列功能基本可以满足。

3、社交网络
赞/踩、 粉丝、 共同好友/喜好、 推送、 下拉刷新等是社交网站的必备功能, 由于社交网站访问量通常比较大, 而且传统的关系型数据不太适合保存这种类型的数据, Redis提供的数据结构可以相对比较容易地实现这些功能。

4、排行榜系统
排行榜系统几乎存在于所有的网站, 例如按照热度排名的排行榜, 按照发布时间的排行榜, 按照各种复杂维度计算出的排行榜, Redis提供了列表和有序集合数据结构, 合理地使用这些数据结构可以很方便地构建各种排行榜系统。

5、计数器应用
计数器在网站中的作用至关重要, 例如视频网站有播放数、 电商网站有浏览数, 为了保证数据的实时性, 每一次播放和浏览都要做加1的操作, 如果并发量很大对于传统关系型数据的性能是一种挑战。 Redis天然支持计数功能而且计数的性能也非常好, 可以说是计数器系统的重要选择。

参考

1、知乎:Redis 和 Memcached 各有什么优缺点,主要的应用场景是什么样的?
2、《Redis开发与运维》

猜你喜欢

转载自blog.csdn.net/liu_005/article/details/80154167