您的位置:首页 > 数据库 > Redis

Redis介绍

2016-01-31 20:04 253 查看
     Redis全称REmote DIctionary Server,是一个开源的高级key-value存储系统,除了代替memcached存储字符串,还可以存储集合、链表和哈希结构等复杂的数据结构。和memcached最主要的不同之处就在于Redis是一个数据存储系统,能够进行数据的持久化,保证数据的存储安全。另外Redis本身支持集群,能够承受高并发之外,同时对大数据的查询实现快速响应的特点。同时Redis也能够支持事务的原子性,能够保证两个客户端在同时访问redis服务器的时候获得更新之后的值。

     本篇博客我们介绍使用Redis需要注意的几点内容以及从网络模型、内存管理以及数据一致性方面比较memcached和redis的区别,下篇博客我们介绍redis集群的相关内容。

使用Redis需要注意的四点内容:

1、Redis是一个典型的key-value存储系统,我们使用key值前缀作为命名空间的时候,最好在程序中使用全局变量来表示,严格避免将变量写死。

2、为了更好的管理我们使用的key值,我们通常都在redis里面保存一个registry值,形成一个__key_registry__,其对应的value值就表示了该key所在的文档的位置。

3、设置一个合适的key存储的过期时间,如果没有过期时间,当redis占据内容过大的时候就会降低性能。当然如果过期时间设置的不合理,例如过短,就会导致内存还很充裕就到了过期时间,来清理垃圾了。我们可以设置一个时间戳,每次更新的时候按照时间戳进行时间排序,从最早的数据开始一次删除即可。

4、Redis是一种解决大数据量高并发的数据存储工具,任何一种工具的使用都要在合适的时候,也就是说选择Redis也是有场景限制的,不可以随便使用。

    下面是从三个方面分析和memcached的不同之处。

1、网络IO模型:memcached是多线程的非阻塞IO复用的网络模型,最常用的命令是stats命令,所有操作都要对这个全局变量加锁,进行计数等工作,带来了性能损耗。Redis是单线程的IO复用模型,自己封装了一个简单的AeEvent事件处理框架,主要实现了epoll、kqueue和select,单线程模型实际会严重影响整体吞吐量,CPU计算过程中,整个IO调度都是被阻塞住的。

2、内存管理:Memcached使用预分配的内存池的方式,使用slab和大小不同的chunk来管理内存。 Redis使用现场申请内存的方式来存储数据,并且很少使用free-list等方式来优化内存分配,会在一定程度上存在内存碎片,Redis跟据存储命令参数,会把带过期时间的数据单独存放在一起,并把它们称为临时数据,非临时数据是永远不会被剔除的,即便物理内存不够,导致swap也不会剔除任何非临时数据(但会尝试剔除部分临时数据),这点上Redis更适合作为存储而不是cache。

3、数据一致性:Memcached基本只支持简单的key-value存储,不支持枚举,不支持持久化和复制等功能。Redis除key/value之外,还支持list,set,sorted set,hash等众多数据结构。

    Redis除了可以很好的存储数据之外,还有其他的功能,比如聚合计算、pubsub、scripting等。在我们的高校平台项目中,我们使用redis作为缓存使用,然后同为实现数据缓存,redis和memcached的不同之处本篇博客详细的介绍了,对于redis的安装,我们按照网上教程,选择在linux平台上搭建redis的集群,下面博客我们介绍redis实现集群。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: