redis是一个key-value存储系统。和Memcached相似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操做,并且这些操做都是原子性的。在此基础上,redis支持各类不一样方式的排序。与memcached同样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操做写入追加的记录文件,而且在此基础上实现了master-slave(主从)同步。python
1 安装redis
1.卸载经过yum安装的redis数据库 yum remove redis -y 2.经过源码编译安装 1.下载redis的源代码 wget http://download.redis.io/releases/redis-4.0.10.tar.gz 2.解压缩源码 tar -zxf redis-4.0.10.tar.gz 3.进入redis源码目录,编译安装,生成可执行命令 redis不须要执行configure,由于他已经有了makefile 4.经过以下2个命令,生成redis的可执行文件 make && make install 5.此时已经能够启动redis服务端了 3.安全性能下的启动redis ,在redis.conf中,更改默认端口,添加密码,开启安全模式 #手动建立redis的配置文件 touch s17redis.conf #s17redis.conf 内容以下 [root@master redis-4.0.10]# cat s17redis.conf bind 0.0.0.0 protected-mode yes port 6888 daemonize yes requirepass alexdsb 4.启动redis服务端,指定配置文件 redis-server s17redis.conf 5.测试访问redis服务端 redis-cli -p 6888 [root@localhost redis-4.0.10]# redis-cli -p 6888 -a 123456 进入以后,能够经过auth指令,进行redis密码验证 验证经过后,能够发送ping,获得pong表明redis正常 6. 过滤出 空白行,以及注释行意外的,有用信息 grep -v "^#" redis.conf | grep -v "^$"
学习redis经常使用命令数据库
set key value #设置一个键值对 get key #获取key的值 keys * 查看全部key type key 查看key类型 expire key seconds 过时时间 ttl key 查看key过时剩余时间 -2表示key已经不存在了 persist 取消key的过时时间 -1表示key存在,没有过时时间 exists key 判断key存在 存在返回1 不然0 del keys 删除key 能够删除多个 dbsize 计算key的数量 lpushx/rpushx 列表存在则添加值,不存在不处理 **** flushdb redis的哈希结构 ,如同python字典套字典 hmset new:2 title "tian qi yu bao" content "tian qi bu cuo" redian "jiaodain fangtan "
redis持久化 rdb 模式 与aof模式vim
rdb 模式持久化 (可能会形成数据丢失) 第一步,准备一个redis配置文件, rdbredis.conf 写入以下内容 daemonize yes #后台运行redis port 6379 #redis端口 logfile /data/6379/redis.log #redis日志文件位置 dir /data/6379/ #指定redis数据文件夹放在哪 dbfilename s17dump.rdb #指定rdb的数据文件 bind 0.0.0.0 requirepass redhat #指定redis的密码 save 900 1 #表明 900秒内 有1个修改key的操做,就进行持久化 save 300 10 # 300秒内 有10个修改类的操做,就持久化 save 60 10000 # 60秒内 有10000个修改类的操做,就持久化 2.经过配置文件启动 redis服务端,支持rdb持久化的 服务端 #而且能够经过 save指令 手动触发持久化数据 redis-server rdbredis.conf
aof持久化模式缓存
aof持久化模式 ,不须要你手动的save触发持久化 配置方式以下 1.修改redis的配置文件,以下,再次建立一个新的aof配置文件 touch aofredis.conf #编辑配置文件,写入以下内容 vim aofredis.conf #写入以下内容 daemonize yes port 6379 logfile /data/6379/redis.log dir /data/6379 appendonly yes 开启持久化的参数,就是这个 appendfsync everysec 每秒进行一次aof持久化
3.支持aof方式的持久化 redis-server aofredis.conf 4.验证 aof持久化, 写入数据后,杀死进程, 再次启动redis,检查数据
不重启的状况下,切换rdb数据到aof模式下安全
1 环境准备 确保是redis2.0 以上的版本 2 登陆此时的rdb数据库,经过两条命令,临时修改切换到aof模式下,也是把rdb数据转化为aof的模式 127.0.0.1:6379> CONFIG set appendonly yes #开启AOF功能 OK 127.0.0.1:6379> CONFIG SET save "" #关闭RDB功能 OK
3 此时仍是临时生效,必须修改配置文件,永久生效
[root@master redis-4.0.10]# cat rdbredis.conf
daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379/
bind 0.0.0.0
appendonly yes
appendfsync everysecapp
redis 主从同步机制memcached
1 环境准备3个 redis数据库实例 redis-6379.conf port 6379 daemonize yes pidfile /data/6379/redis.pid loglevel notice logfile "/data/6379/redis.log" dbfilename dump.rdb dir /data/6379 redis-6380.conf port 6380 daemonize yes pidfile /data/6380/redis.pid loglevel notice logfile "/data/6380/redis.log" dbfilename dump.rdb dir /data/6380 SLAVEOF 127.0.0.1 6379 redis-6381.conf port 6381 daemonize yes pidfile /data/6381/redis.pid loglevel notice logfile "/data/6381/redis.log" dbfilename dump.rdb dir /data/6381 SLAVEOF 127.0.0.1 6379 2.分别启动三个 数据库 3.此时已是一主两从的身份了 4.能够演示在主库写入数据,从库读取数据的实验 手动切换主从同步的故障(当主库挂掉的时候,怎么办 ) 1.模拟主库挂掉,kill杀死主库的进程 2.此时俩从库,群龙捂手 3.手动的切换两个从库的身份,让其中一个 为新的master 选举6381为新的master,只须要在6381下输入 slaveof on one 而后配置6380为新的slave ,只须要 在6380下输入 slaveof 127.0.0.1 6381 4.此时新的一主一从 就行了 主 6381 从6380 5,能够测试写入数据 -- 一条命令 --sed 's/6379/6380/g' redis-6379.conf > redis-6380.conf 快速替换加建立新的