1:Redis是什么
- Redis:REmote DIctionary Server(远程字典服务器)是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一, 也被人们称为数据结构服务器
- Redis与其他key - value缓存产品有以下三个特点,
Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储
Redis支持数据的备份,即master-slave模式的数据备份
下表展示了一部分在功能上与Redis有重叠的数据库服务器和缓存服务器,从这个表可以看出Redis与这些数据库及软件之间的区别。
2:Redis特性
Redis是一款功能强大、支持多种数据类型的数据库,它具有许多优秀的特性,具体如下。
-
支持多种计算机编程语言,如Java,C,C++,Pyhon,PHP,Lua等。
-
具有丰富的数据类型,如Sring、List. Set. Hash. Sorted Set等。
-
支持多种数据结构,如哈希、集合、位图(多用于活跃用户数等的统计)。HyperLogLog(超小内存唯一值计数,由于只有12KB, 因而是有定误差范围的) 、GEO (地理信息定位)。
-
读/写速度快, 性能高。官方给出的数据是: Redis 能读的速度是10000次s,写的速度是81 000次1s。之所以有这么快的读/写速度,是因为这些数据都存储在内存中。
-
支持持久化。Redis的持久化也就是备份数据,它每隔一段时间就将 内存中的数据保存在磁盘中,在重启的时候会再次加载到内存中,从而实现数据持久化。Redis的持久化方式是RDB和AOF。
-
简单且功能强大。如利用Redis可以实现消息订阅发布、Lua脚本、数据库事务、Pipeline (管道,即当指令达到一定数量后,客户端才会执行)。同时Redis是单线程的,它不依赖外部库,它的所有操作都是原子性的,使用简单。
-
实现高可用主从复制, 主节点做数据副本。
-
实现分布式集群和高可用。Redis Cluster 支持分布式,进而可以实现分布式集群;Redis Sentinel 支持高可用。
3:Redis使用场景
edis 是一款功能强 大的数据库,在实际应用中,不管是什么架构的网站或系统,我们都可以将Redis引入项目,这样就可以解决很多关系型数据库无法解决的问题。比如,现有数据库处理缓慢的任务,或者在原有的基础上开发新的功能,都可以使用Redis 来完成。接下来,一起来看看Redis的典型使用场景。
-
做缓存。这是Redis使用最多的场景。Redis 能够替代Memcached,使用Redis,不需要每次都重新生成数据,而且它的缓存速度和查询速度比较快,使用也比较方便。比如,实现数据查询、缓存新闻消息内容、缓存商品内容或购物车等。
-
做计数器应用。Redis的命令具有原子性,它提供了INCR、DECR、GETSETINCRBY等相关命令来构建计数器系统。可以使用Redis来记录一个热门帖子的转发数、 评论数。通过Redis的原子递增,可以实现在任何时候封锁一一个 IP地址等。
-
实现消息队列系统。 Redis运行稳定, 速度快,支持模式匹配, 也可以实现消息订阅发布。Redis还有阻塞队列的命令,能够让一个程序在执行时被另一个程序添加到队列中。比如,实现秒杀、抢购等。
-
做实时系统、消息系统。可以利用Redis的set功能做实时系统,来查看某个用户是否进行了某项操作,对其行为进行统计对比。也可以利用Redis的Pub/Sub构建消息系统,如在线聊天系统。
-
实现排行榜应用。排行榜的实现利用了Redis 的有序集合。比如,对上百万个用户的排名利用Redis 的ZADD,ZREVRANGE,ZRANK等命令可以轻松实现排名并获取排名的用户
-
做数据过期处理。我们可以将sorted set的score值设置成过期时间的时间戳,然后通过过期时间排序,找出过期的数据进行删除。可以采用过期属性来确认一个关键字在什么时候应该被删除。也可以利用UNIX时间作为关键字,将列表按时间排序。对currenttime和timeto_live 进行检索,查询出过期的数据,进而删除。
-
做大型社交网络。任何架构的系统或网站都可以与Redis 很好地结合,同样,采用Redis可以很好地与社交网络相结合,如新浪微博、Twitter 等。比如,我们在使用QQ时,进行实时聊天就需要Redis的支持;又如, 我们在浏览微博时,实现信息的刷新、浏览查看等也需要Redis的支持。
-
分布式集群架构中的session分离。采用分布式集群部署,可以满足一个Web应用系统被大规模访问的需要。而要实现分布式集群部署,就要解决session统的问题。通常可以采用Redis来实现session共享机制,以达到session统一的目的。
通过Redis的实际使用场景,可以看出Redis的应用是非常广泛的,而且在实际使用中是非常有价值的。可以采用Redis 做新闻消息系统、广告系统,来实时向众多用户推送各种信息,实时显示最新的项目列表,统计网站的在线人数、帖子转发次数,实现游戏排名及其他相关排名等。Redis 的出现,避免了传统关系型数据库的弊端,让开发变得更加简单和高效,获得了更加实时的用户体验,同时帮助众多大型网站实现了高并发、高可用、高可扩展。
4:Redis的下载
这里我只说在linux上的的下载方式,因为我们使用redis很少在window操作系统上
4:怎么玩
Redis常用五大数据类型和键(Key)——新生必看篇
Redis持久化AOF——新生必看篇
Redis持久化RDB——新生必看篇
Redis事务——看了必懂篇
Redis消息订阅发布介绍
Redis主从复制——自己看的懂篇
还在更新