1. 安装Redis3
1.下载redis3的稳定版本,下载地址http://download.redis.io/releases/redis-3.2.10.tar.gz
2.上传redis-3.2.10.tar.gz到服务器
3.解压redis源码包
tar -zxvf redis-3.2.10.tar.gz -C /usr/local/src/
4.进入到源码包中,编译并安装redis
cd /usr/local/src/redis-3.2.10/
make && make install
5.报错,缺少依赖的包
缺少gcc依赖(c的编译器)
6.配置本地YUM源并安装redis依赖的rpm包
yum -y install gcc
7.编译并安装
make && make install
8.报错,原因是没有安装jemalloc内存分配器,可以安装jemalloc或直接输入
make MALLOC=libc && make install
9.重新编译安装
make MALLOC=libc && make install
10.启动redis的服务端,有两种方式,一种是前端启动,这种启动需要占用一个链接,启动后对于当前会话页面不能进行操作,不能关闭,不然redis服务就会退出。所以我们更希望它可以不提示这个框框,然后也不影响我们的正常的代码显示。那么我们就要修改服务端启动方式为后端启动。
进入src目录下 启动命令:./redis.server
将Redis.conf文件copy到src目录下。
这个时候,按住shift键加冒号这俩键(需要是在英文输入下),进入底行模式输入set nu 显示行号,找到128 改为yes
开始启动
11.查看redis进程状态
ps -ef | grep redis
进入cli模式,编辑测试一下
12.使用命令行客户的连接redis
redis-cli
13.关闭redis
redis-cli shutdown
17.配置redis密码
config set requirepass 123
(Ps:需重启Redis才能生效)
查询密码:
redis 127.0.0.1:6379> config get requirepass
(error) ERR operation not permitted密码验证:
redis 127.0.0.1:6379> auth test123
OK再次查询:
redis 127.0.0.1:6379> config get requirepass
1) "requirepass" 2) "test123"3、登陆有密码的Redis:
在登录的时候的时候输入密码:
redis-cli -p 6379 -a test123
先登陆后验证:
redis-cli -p 6379
redis 127.0.0.1:6379> auth test123
OK添加redis的java依赖
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> |
1. Redis客户端
1.1. Java客户端jedis
Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如java、C、C#、C++、php、Node.js、Go等。
在官方网站里列一些Java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis、等其中官方推荐使用Jedis和Redisson。 在企业中用的最多的就是Jedis
2. Redis数据类型
3. Redis持久化
- Redis DataBase(简称RDB)
- Append-only file (简称AOF)
- 执行机制:快照,直接将databases中的key-value的二进制形式存储在了rdb文件中
- 优点:性能较高(因为是快照,且执行频率比aof低,而且rdb文件中直接存储的是key-values的二进制形式,对于恢复数据也快)
- 使用单独子进程来进行持久化,主进程不会进行任何IO操作,保证了redis的高性能
- 缺点:在save配置条件之间若发生宕机,此间的数据会丢失
- RDB是间隔一段时间进行持久化,如果持久化之间redis发生故障,会发生数据丢失。所以这种方式更适合数据要求不严谨的时候
- 执行机制:将对数据的每一条修改命令追加到aof文件
- 优点:数据不容易丢失
- 可以保持更高的数据完整性,如果设置追加file的时间是1s,如果redis发生故障,最多会丢失1s的数据;且如果日志写入不完整支持redis-check-aof来进行日志修复;AOF文件没被rewrite之前(文件过大时会对命令进行合并重写),可以删除其中的某些命令(比如误操作的flushall)
- 缺点:性能较低(每一条修改操作都要追加到aof文件,执行频率较RDB要高,而且aof文件中存储的是命令,对于恢复数据来讲需要逐行执行命令,所以恢复慢)
- AOF文件比RDB文件大,且恢复速度慢
如果既配置了RDB,又配置了AOF,则在进行数据持久化的时候,都会进行,但是在根据文件恢复数据的时候,以AOF文件为准,RDB文件作废
4. redis主从复制
为了高可用,引入redis的主从复制的概念。
4.1. 准备工作
完成主从复制,最少需要两台服务器,讲学方便,在一台服务器中演示即可。
但是一台服务器中需要启动两个redis
第一步:复制一个redis
[root@redis01 redis0707]# cp bin/ bin2 –r
第二步:修改端口
将bin2目录下的redis.conf文件中的端口修改为6380
4.2. 主机配置
无需配置
4.3. 从机配置
从机是只读的。
5. Redis集群
1.1 redis-cluster架构图
1、 集群通信是通过“ping-pong”机制进行通信;
2、 客户端不需要将所有的节点都连接上,只需要连接其中一个节点即可。
3、 集群中存储数据是存储到一个个的槽中,集群中槽的个数是固定的:16384,槽的编号是【0-16383】。在集群中存储数据时,会根据key进行计算,计算出一个结果,然后将这个结果和16384取余,余数就是这个key将要存储的槽的编号。
注意:槽的编号之间不能断开。
槽的计算会将数据保存的很平均,不会产生一个槽满一个槽空的情况。
1.2 redis-cluster投票:容错
什么时候整个集群不可用(cluster_state:fail)?
a:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完成时进入fail状态..
b:如果集群超过半数以上master挂掉,无论是否有slave集群进入fail状态.