1、redis是什么:
redis的出现时间并不长,是NoSQL中的一种,基于键-值型的存储,与memcache类似,但是memcache中只是内存的缓存,而redis不仅是内存中的缓存,还提供持久存储,在2009年第一次发布redis
Redis 全称(REmote DIctionary Server)远程字典服务器,而这个字典服务器从本质上来讲,主要是提供数据结构的远程存储功能的,可以理解为redis是一个高级的K-V存储,和数据结构存储,因为redis除了能够存储K-V这种简单的数据之外,还能够存储,列表、字典、hash表、等对应的数据结构
在性能上redis不比memcache差,因为redis整个运行通通都是在内存中实现的,它的所有的数据集都是保存在内存中的,内存中的数据会周期性的写入到磁盘上,以实现数据的持久功能,而这种写磁盘并不是用于访问,而仅是冗余功能,所以redis所有功能都在内存中完成,因为此性能也是可想而知
redis与mamcache不同之处在于redis有一个周期性的将数据保存到磁盘上的机制,而且不只一种,有两种机制,这也是redis持久化的一种实现,另外与mamcache有所区别的是,redis是单线程服务器,只有一个线程来响应所有的请求
redis支持主从模式,但是redis的主从模式默认就有一个sentinel工具,从而实现主从架构的高可用,也就是说,redis能够借助于sentinel工具来监控主从节点,当主节点发生故障时,会自己提升另外一个从节点成为新的主节点
在redis 3.0版本发布,开始支持redis集群,从而可以实现分布式,可以将用户的请求分散至多个不同节点
2、 redis所支持的数据类型
支持存储的数据类型有、String(字符串,包含整数), List(列表), Hash(关联数组), Sets(集合), Sorted Sets(有序集合), Bitmaps(位图), HyperLoglog(超小内存唯一值计数),GEO(地理信息定位)
3、 redis性能评估:
(1)100万较小的键存储字符串,大概消耗100M内存
(2)由于redis是单线程,如果服务器主机上有多个CPU,只有一个能够使用,但并不意味着CPU会成为瓶颈,因为redis是一个比较简单的K-V数据存储,CPU通常不会成为瓶颈的
(3)在常见的linux服务器上,500K(50万)的并发,只需要一秒钟处理,如果主机硬件较好的情况下,每秒钟可以达到上百万的并发
4 、 Redis与Memcache对比:
Memcache是一个分布式的内存对象缓存系统
而redis是可以实现持久存储
Memcache是一个LRU的缓存
redis支持更多的数据类型
Memcache是多线程的
redis是单线程的
二者性能几乎不相上下,实际上redis会受到硬盘持久化的影响,但是性能仍然保持在与Memcache不相上下,是非常了不起的
5 、 Redis的优势:
丰富的(资料形态)操作
String(字符串,包含整数), List(列表), Hash(关联数组), Sets(集合), Sorted Sets(有序集合), Bitmaps(位图), HyperLoglog
内建Replication和culster(自身支持复制及集群功能)
支持就地更新(in-place update)操作,直接可以在内存中完成更新操作
支持持久化(磁盘)
避免雪崩效应,万一出现雪崩效应,所有的数据都无法恢复,但redis由于有持久性的数据,可以实现恢复
6、 Memcached的优势:
多线程
善用多核CPU
更少的阻塞操作
更少的内存开销
更少的内存分配压力
可能有更少的内存碎片
官网地址:http://www.redis.cn
7、版本
奇数结尾的版本是非稳定版本
偶数结尾的是稳定版本,建议使用稳定版。
8、redis典型使用场景
(1)缓存系统
(2)计数器
(3)消息队列系统
(4)排行榜
(6)社交网络
9、redis的安装
$ wget http://download.redis.io/releases/redis-5.0.4.tar.gz
$ tar xzf redis-5.0.4.tar.gz /usr/local
$ cd /usr/local/
$ cd redis-5.0.4
进行make编译之前确保已经安装了gcc
$ make
如果make报类似以下错误:
zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory #include <jemalloc/jem
执行 make MALLOC=lib 就行了
10、打开redis服务
src/redis-server
11、进入redis控制台
另打开一个会话,输入
cd /usr/local/redis-5.0.4
src/redis-cli
12、关闭redis服务
ps -ef | grep redis
kill 进程号