什么是Redis?
Redis 是一个使用 C 语言写成的,开源的 key-value 数据库和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。
Redis有什么应用场景?
1,会话缓存(最常用)
最常用的一种使用Redis的情景是会话缓存(session cache)。用Redis缓存会话相对于其他存储(如Memcached)的优势在于:Redis提供持久化。
2,消息队列,例如支付
Reids在内存存储引擎领域的一大优点是提供 list 和 set 操作,这使得Redis能作为一个很好的消息队列平台来使用。Redis作为队列使用的操作,就类似于本地程序语言(如Python)对 list 的 push/pop 操作。
3,活动排行榜或计数
Redis在内存中对数字进行递增或递减的操作实现的非常好。集合(Set)和有序集合(Sorted Set)也使得我们在执行这些操作的时候变的非常简单。
4,发布,订阅消息(消息通知)
Redis有发布/订阅功能,redis的发布与订阅(发布/订阅)是它的一种消息通信模式,一方发送信息,一方接收信息。如:当三个客户端同时订阅同一个频道时,有新信息发送给频道1时,就会将消息发送给订阅它的三个客户端。
Redis与Memcached的区别与比较
1 、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。memcache支持简单的数据类型String。
2 、Redis支持数据的备份,即master-slave模式的数据备份。
3 、Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用,而Memecache把数据全部存在内存之中
4、 redis的速度比memcached快很多
5、Memcached是多线程,非阻塞IO复用的网络模型;Redis使用单线程的IO复用模型。
Redis持久化的几种方式
1、快照(snapshots)
缺省情况下,Redis把数据快照存放在磁盘上的二进制文件中,文件名为dump.rdb。
2、AOF
RDB持久化是将进程数据写入文件,而AOF持久化(即Append Only File持久化),则是将Redis执行的每次写命令记录到单独的日志文件中(有点像MySQL的binlog);当Redis重启时再次执行AOF文件中的命令来恢复数据。
与RDB相比,AOF的实时性更好,因此已成为主流的持久化方案。
快照模式并不十分健壮,当系统停止,或者无意中Redis被kill掉,最后写入Redis的数据就会丢失。这对某些应用也许不是大问题,但对于要求高可靠性的应用来说,Redis就不是一个合适的选择。Append-only-File文件模式是另一种选择。你可以在配置文件中打开AOF模式
3、虚拟内存方式
当你的key很小而value很大时,使用VM的效果会比较好.因为这样节约的内存比较大.