1.Redis的简介
Redis完全开源免费的,遵守BSD协议,是一个高性能的key-value结构的数据库。Redis与其他的缓存产品相比有以下三个特点:
1)Redis支持数据的持久化,可以将内存中的数据保存在磁盘上,重载的时候可以再次加载使用。
2)Redis不仅仅简单的支持key-value类型的数据结构,同时还支持list,hash, set, zset等数据结构的存储。
3)Redis支持数据的备份,即支持master-slave模式的数据备份。
Redis的优势:
1)性能极高 ——redis读的速度是110000次/s,写的速度是80000次/s。
2)丰富的数据类型——redis支持二进制案例的Strings,lists,hashes,Sets,zset数据类型的操作。
3)原子——Redis的所有的操作都是原子性的,意思就是要么成功执行,要么失败完全不执行,单个操作也是原子性的,多个操作也支持事务,即原子性,通过MULIT和EXEC指令包起来。
4)丰富的特性——Redis还支持publish/subscribe,通知,key过期等特性。
Redis与其他的key——vlaue结构的存储有什么不同?
1)Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
2)Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。
2 Redis的存储
Redis中的数据存储有两种:cache-only,persistence。
1)cache只做为“缓存”服务,不持久数据,数据在服务终止后将会消失,此模式下也将不存在“数据恢复”的手段,是一种安全性低/效率高/容易扩展的方式;
2)persistence即为内存中的数据持久备份到磁盘文件,在服务重启后会恢复,此模式下的数据相对安全。
对与persistence持久化存储,Redis提供了两种持久化的方法:
RDB(Redis Database ):RDB是在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次的持久化文件,以达到数据恢复。
优点:使用单独子进程来进行持久化,主进程不会进行任何IO操作,保证了redis的高性能
缺点:RDB是间隔一段时间进行持久化,如果持久化之间redis发生故障,会发生数据丢失。所以这种方式更适合数据要求不严谨的时候
AOF(Append-only file):
将“操作 + 数据”以格式化指令的方式追加到操作日志文件的尾部,在append操作返回后(已经写入到文件或者即将写入),才进行实际的数据变更,“日志文件”保存了历史所有的操作过程;当server需要数据恢复时,可以直接replay此日志文件,即可还原所有的操作过程。AOF相对可靠,它和mysql中bin.log、apache.log、zookeeper中txn-log简直异曲同工。AOF文件内容是字符串,非常容易阅读和解析。
优点:可以保持更高的数据完整性,如果设置追加file的时间是1s,如果redis发生故障,最多会丢失1s的数据;且如果日志写入不完整支持redis-check-aof来进行日志修复;AOF文件没被rewrite之前(文件过大时会对命令进行合并重写),可以删除其中的某些命令(比如误操作的flushall)。
缺点:AOF文件比RDB文件大,且恢复速度慢。
3.单机版的安装
安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:yum install make cmake gcc gcc-c++
把源码包上传到/usr/local/software/下
解压
tar -zxvf redis-3.2.11.tar.gz
进入解压后的目录,编译make
如果Redis 执行 make #error "Newer version of jemalloc required"解决办法是执行:
make MALL = lib
安装,PREFIX参数指定redis的安装目录,命令如下:
make install PREFIX=/usr/local/software/redis
进入安装后的路径,就是cd /usr/local/software/redis
在bin目录下执行
cd bin
./redis-server
这种方式是前端启动
缺点是ssh命令窗口关了之后服务就会停止
后台启动:
把redis源码包解压目录下的redis.conf复制到安装目录的bin下
cp /usr/local/software/redis-3.2.11/redis.conf /usr/local/software/redis/bin
修改配置文件(bin下面的redis.conf):
redis默认只能本机访问,要把下面两句改一下才能远程访问。
设置后台启动
在bin目录下执行./redis-server redis.conf
测试连接
./redis-cli
停止redis
./bin/redis-cli shutdown
建议直接kill,不然有可能关不掉
指定连接redis服务的ip和端口:
查看redis状态:
ps -ef | grep redis