redis属于NoSQL学名(not only sql) 特色: 存储结构与mysql这一种关系型数据库彻底不一样,nosql存储的是key value形式 nosql有不少产品,都有本身的api和语法,以及业务场景 产品种类: Mongodb redis Hbase hadoop
应用场景不一样,sql支持关系复杂的数据查询,nosql反之 sql支持事务性,nosql不支持
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它能够用做数据库、缓存和消息中间件 redis是c语言编写的,支持数据持久化,是key-value类型数据库。 应用在缓存,队列系统中 redis支持数据备份,也就是master-slave模式
性能高,读取速度10万次每秒 写入速度8万次每秒 全部操做支持原子性 # 这么快的缘由是: 1.彻底基于内存数据库, 2.redis彻底是由C语言写的单线程数据库 用做缓存数据库,数据放在内存中 替代某些场景下的mysql,如社交类app 大型系统中,能够存储session信息,购物车订单
1 . yum安装mysql
#前提得配置好阿里云yum源,epel源 #查看是否有redis包 yum list redis #安装redis yum install redis -y #安装好,启动redis systemctl start redis # 检查redis是否工做了 redis-cli #redis 客户端工具 #进入交互式环境后,执行ping,返回pong表示安装成功 127.0.0.1:6379> ping PONG
2 . 源码编译安装redis
# 编译安装的优点 1. 编译安装能够扩展第三方模块 2.编译安装能够统一路径,Linux软件约定安装在 /opt下 3.软件仓库版本通常比较低, 编译安装能够根据需求, 安装最新版本
1.下载redis源码 wget http://download.redis.io/releases/redis-4.0.10.tar.gz 2.解压缩 tar -zxvf redis-4.0.10.tar.gz 3.切换redis源码目录 cd redis-4.0.10.tar.gz 4.编译源文件 make 5.编译好后,src/目录下有编译好的redis指令 6.make install 安装到指定目录,默认在/usr/local/bin # 能够直接make && make install
./redis-benchmark //用于进行redis性能测试的工具 ./redis-check-dump //用于修复出问题的dump.rdb文件 ./redis-cli //redis的客户端 ./redis-server //redis的服务端 ./redis-check-aof //用于修复出问题的AOF文件 ./redis-sentinel //用于集群管理
redis配置文件名为 redis.conf # 这个文件能够自定义, 好比: # touch redis.s18.conf 内容以下 grep -v '^$' redis.conf |grep -v "^#" > redis.s18.conf # 去掉空格和#开头的数据写到redis.s18.conf中 # 而后 vim redis.s18.conf bind 192.168.81.132 #redis启动地址 protected-mode yes #开启redis安全模式 port 6800 #更改redis端口 daemonize yes #redis后台启动 pidfile /var/run/redis_6379.pid loglevel notice # 日志等级是notice logfile "" requirepass 666 #设置redis的密码 redis没有帐号
# redis-server 指定加载的文件 # 若是redis-server 后面什么也不指定, 会以非daemon的方式来运行,且默认服务端口为6379。 redis-server redis.s18.conf
redis-cli -h 192.168.81.132 -p 6800 # 参数解释 -h 指定主机地址 -p 指定redis端口 # 登陆以后经过auth指令 验证密码 若是没有密码直接ping 使用ping命令,确保redis正常可用回复了一个pong
redis是一种高级的key:value存储系统,其中value支持五种数据类型 字符串(strings) 散列(hashes) 列表(lists) 集合(sets) 有序集合(sorted sets)
keys * # 查看数据库全部的key type key #查看key的类型 EXPIRE addr 20 #给addr这个key设置20秒的过时时间 ttl key #查看key的过时剩余时间 persist key # 取消key的过时时间 exists key # 判断key存在 存在返回1 不然0 del keys # 删除key 能够删除多个 dbsize # 计算key的数量 set key value # 设置key value # set name attila get key # get name 获得的是attila
Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,
Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失。
RDB(持久化) 内存数据保存到磁盘 能够按期执行, 也能够手动(save)执行 RDB持久化产生的RDB文件是一个通过压缩的二进制文件,这个文件被保存在硬盘中,redis能够经过这个文件还原数据库当时的状态。 在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot) 优势:速度快,适合作备份,主从复制就是基于RDB持久化功能实现 rdb经过再redis中使用save命令触发 rdb
# (在redis文件下)开启rdb功能,vim redis-rdb.conf 内容以下: daemonize yes port 6379 logfile /data/6379/redis.log dir /data/6379 # 这个须要mkdir -p /data/6379 dbfilename dbmp.rdb # 当触发save以后会生成dbmp.rdb这个文件 bind 127.0.0.1 save 900 1 # 每隔900秒有一个操做就执行持久化 save 300 10 save 60 10000
redis-server redis-rdb.conf
redis-cli # 登陆redis 127.0.0.1:6379> set name attila OK 127.0.0.1:6379> save OK # 而后退出redis 在进来,keys * name还在,若是不持久化,就没有数据
AOF(append-only log file) 记录服务器执行的全部变动操做命令(例如set del等),并在服务器启动时,经过从新执行这些命令来还原数据集 AOF 文件中的命令所有以redis协议的格式保存,新命令追加到文件末尾。 优势:最大程序保证数据不丢 缺点:日志记录很是大
# 在redis文件下 vim redis-aof.conf 写入以下数据: daemonize yes port 6379 logfile /data/6379/redis.log dir /data/6379 # 也须要建立/data/6379 appendonly yes appendfsync everysec
appendonly yes appendfsync always 老是修改类的操做 everysec 每秒作一次持久化 no 依赖于系统自带的缓存大小机制
redis-server redis-aof.conf
[root@localhost 6379]# ls appendonly.aof redis.log
redis-cli # 登陆redis 127.0.0.1:6379> set name attila OK 127.0.0.1:6379> save OK # 最后退出redis, 从新登陆redis, 输入keys * 检查结果name还在
# 再开一个窗口,而后检测实时动态 [root@localhost 6379]# tail -f appendonly.aof
# 1.启动rdb方式的redis # 2.经过命令切换为aof模式,仅仅是临时生效,切换到aof,切换后还得修改配置文件 127.0.0.1:6379> CONFIG set appendonly yes #开启AOF功能 OK 127.0.0.1:6379> CONFIG SET save "" #关闭RDB功能 OK 3.还得修改redis的配置文件,让他下次重启也是aof 修改redis-rdb.conf 为以下配置,之后重启也是aof了 daemonize yes port 6379 logfile /opt/6379/redis.log dir /opt/6379 appendonly yes appendfsync everysec # 重启redis数据库 # 4.至此redis已经切换到 aof模式下了