【死磕Redis系列】一、初识Redis

------------------------------------------------------------------------------------------------------慢慢来,一切都来得及


1.Redis简介

Redis(Remote Dictionary Server ) 是一个开源(BSD许可)的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value存储系统。它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

 

2.Redis与Memcache区别

  • 数据类型

redis不仅仅支持简单的k/v类型的数据,同时还提供String,List,Set,Hash,Sorted Set,pub/sub,Transactions数据结构的存储。其中Set是HashMap实现的,value永远为null而已。

memcache支持简单数据类型,需要客户端自己处理复杂对象。

  • 持久性

redis支持数据持久化存储,可以将内存中的数据保存到磁盘中,重启的时候可以再次加载使用。 

memcache不支持数据持久存储。

  • 性能

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

  • 可靠性

MemCache不支持数据持久化,断电或重启后数据消失,但其稳定性是有保证的。Redis支持数据持久化和数据恢复,允许单点故障,但是同时也会付出性能的代价。

需要慎重考虑的部分 

1.Memcache单个key-value大小有限,一个value最大只支持1MB,而Redis最大支持512MB 

2.Memcache只是个内存缓存,对可靠性无要求;而Redis更倾向于内存数据库,因此对对可靠性方面要求比较高 

3.从本质上讲,Memcache只是一个单一key-value内存Cache;而Redis则是一个数据结构内存数据库,支持五种数据类型,因此Redis除单纯缓存作用外,还可以处理一些简单的逻辑运算,Redis不仅可以缓存,而且还可以作为数据库用

 

附:一些数据库和缓存服务器的特性与功能

名称

类型

数据存储选项

查询类型

附加功能

Redis

使用内存存储(in-memory) 的非关系数据库

字符串、列表、集合、散列表、有序集合

每种数据类型都有自己的专属命令, 另外还有批量操作(bulk operation)和不完全(partial)的事务支持

发布与订阅, 主从复制(master/slave replication), 持久化, 脚本(存储过程,stored procedure)

memcached

使用内存存储的键值缓存

键值之间的映射

创建命令、读取命令、更新命令、删除命令以及其他几个命令

为提升性能而设的多线程服务器

MySQL

关系数据库

每个数据库可以包含多个表, 每个表可以包含多个行; 可以处理多个表的视图(view); 支持空间(spatial)和第三方扩展

SELECT 、 INSERT 、 UPDATE 、 DELETE 、函数、存储过程

支持ACID性质(需要使用InnoDB), 主从复制和主主复制 (master/master replication)

PostgreSQL

关系数据库

每个数据库可以包含多个表, 每个表可以包含多个行; 可以处理多个表的视图; 支持空间和第三方扩展;支持可定制类型

SELECT 、 INSERT 、 UPDATE 、 DELETE 、内置函数、自定义的存储过程

支持ACID性质,主从复制, 由第三方支持的多主复制 (multi-master replication)

MongoDB

使用硬盘存储(on-disk)的非关系文档存储

每个数据库可以包含多个表, 每个表可以包含多个无schema (schema-less)的BSON文档

创建命令、读取命令、更新命令、删除命令、条件查询命令,等等

支持map-reduce操作,主从复制,分片, 空间索引(spatial index)

 

你可能感兴趣的:(redis)