Linux安装redis

1. Redis简介

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

Redis 与其他 key - value 缓存产品有以下三个特点:

1) Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 

2) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

3) Redis支持数据的备份,即master-slave模式的数据备份

Redis优势:

1) 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。

2) 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。

3) 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。

4) 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

Redis与其他key-value存储有什么不同?

1) Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。

2) Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。 

2. Redis存储

Redis中数据存储模式有2种:cache-only,persistence;

cache-only即只做为缓存服务,不持久数据,数据在服务终止后将消失,此模式下也将不存在数据恢复的手段,是一种安全性低/效率高/容易扩展的方式;

persistence即为内存中的数据持久备份到磁盘文件,在服务重启后可以恢复,此模式下数据相对安全。

对于persistence持久化存储,Redis提供了两种持久化方法:

Redis DataBase(简称RDB)

Append-only file (简称AOF) 

RDB是在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,达到数据恢复。 

优点:使用单独子进程来进行持久化,主进程不会进行任何IO操作,保证了redis的高性能 

缺点:RDB是间隔一段时间进行持久化,如果持久化之间redis发生故障,会发生数据丢失。所以这种方式更适合数据要求不严谨的时候

Append-only file,将操作 数据以格式化指令的方式追加到操作日志文件的尾部,在append操作返回后(已经写入到文件或者即将写入),才进行实际的数据变更,日志文件保存了历史所有的操作过程;当server需要数据恢复时,可以直接replay此日志文件,即可还原所有的操作过程。AOF相对可靠,它和mysqlbin.logapache.logzookeepertxn-log简直异曲同工。AOF文件内容是字符串,非常容易阅读和解析。 

优点:可以保持更高的数据完整性,如果设置追加file的时间是1s,如果redis发生故障,最多会丢失1s的数据;且如果日志写入不完整支持redis-check-aof来进行日志修复;AOF文件没被rewrite之前(文件过大时会对命令进行合并重写),可以删除其中的某些命令(比如误操作的flushall)。 

缺点:AOF文件比RDB文件大,且恢复速度慢。

4. 单机版安装

安装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 MALLOC=libc 

安装,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

修改redis密码

在配置文件中找到如下行:

#requirepass foobared

去掉前面的注释,并修改为所需要的密码:

requirepass myPassword (其中myPassword就是要设置的密码)

设置Redis认证密码后,客户端登录时需要使用-a参数输入认证密码,不添加该参数虽然也可以登录成功,但是没有任何操作权限。如下:

$ ./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.

使用密码认证登录,并验证操作权限:

$ ./redis-cli -h 127.0.0.1 -p 6379 -a myPassword
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "myPassword"

看到类似上面的输出,说明Reids密码认证配置成功。

除了按上面的方式在登录时,使用-a参数输入登录密码外。也可以不指定,在连接后进行验证:

$ ./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> auth myPassword
OK
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "myPassword"
127.0.0.1:6379> 
原文地址:https://www.cnblogs.com/sueyyyy/p/9999713.html