一 . redis简介

redis属于NoSQL学名(not only sql)
特点:
存储结构与mysql这一种关系型数据库完全不同,nosql存储的是key value形式
nosql有很多产品,都有自己的api和语法,以及业务场景
产品种类:
Mongodb
redis
Hbase hadoop

  NoSQL和SQL的区别

应用场景不同,sql支持关系复杂的数据查询,nosql反之
sql支持事务性,nosql不支持

  redis的特性

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件
redis是c语言编写的,支持数据持久化,是key-value类型数据库。
应用在缓存,队列系统中
redis支持数据备份,也就是master-slave模式

  redis的优势

性能高,读取速度10万次每秒
写入速度8万次每秒
所有操作支持原子性
# 这么快的原因是: 1.完全基于内存数据库, 2.redis完全是由C语言写的单线程数据库 用作缓存数据库,数据放在内存中
替代某些场景下的mysql,如社交类app
大型系统中,可以存储session信息,购物车订单

  redis的安装

    1 . yum安装

#前提得配置好阿里云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 . 源码编译安装

# 编译安装的优势
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可执行文件

./redis-benchmark //用于进行redis性能测试的工具
./redis-check-dump //用于修复出问题的dump.rdb文件
./redis-cli //redis的客户端
./redis-server //redis的服务端
./redis-check-aof //用于修复出问题的AOF文件
./redis-sentinel //用于集群管理

  redis的配置文件

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服务端

# redis-server   指定加载的文件
# 如果redis-server 后面什么也不指定, 会以非daemon的方式来运行,且默认服务端口为6379。
redis-server redis.s18.conf

  使用redis

redis-cli -h 192.168.81.132 -p 6800
# 参数解释 -h 指定主机地址 -p 指定redis端口
# 登录之后通过auth指令 验证密码 如果没有密码直接ping
使用ping命令,确保redis正常可用回复了一个pong

  redis的数据类型

redis是一种高级的key:value存储系统,其中value支持五种数据类型
字符串(strings)
散列(hashes)
列表(lists)
集合(sets)
有序集合(sorted sets)

  redis简单指令

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是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,
Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失。

  1 . RDB持久化

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服务端,支持rdb功能

redis-server redis-rdb.conf

  登录redis,写入数据,手动执行save触发持久化,会生成一个二进制的数据文件 dbmp.rdb

redis-cli   # 登录redis
127.0.0.1:6379> set name attila
OK
127.0.0.1:6379> save
OK
# 然后退出redis 在进来,keys * name还在,如果不持久化,就没有数据

  2 . aof持久化

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

  aof持久化配置的两条参数

appendonly yes
appendfsync always 总是修改类的操作
everysec 每秒做一次持久化
no 依赖于系统自带的缓存大小机制

  启动redis服务

redis-server  redis-aof.conf

  检查.data/6379文件

[root@localhost 6379]# ls
appendonly.aof redis.log

  登录redis, 写入数据

redis-cli  # 登录redis
127.0.0.1:6379> set name attila
OK
127.0.0.1:6379> save
OK # 最后退出redis, 重新登录redis, 输入keys * 检查结果name还在

  实时检查appendonly.aof文件信息

# 再开一个窗口,然后检测实时动态
[root@localhost 6379]# tail -f appendonly.aof

三 . redis在不重启的状态下,从rdb持久化切换到aof持久化

  redis版本必须是2.2版本以上

# 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模式下了

redis简介与持久化的更多相关文章

  1. Redis简介及持久化

    Redis是一个key-value数据库,他不仅性能强劲,而且还具有复制特性以及为解决问题而生的独一无二的数据模型.可用于缓存.消息队列.发布.订阅消息.商品列表和评论列表等场景.Redis提供了5种 ...

  2. Redis简介、与memcached比较、存储方式、应用场景、生产经验教训、安全设置、key的建议、安装和常用数据类型介绍、ServiceStack.Redis使用(1)

    1.NOSQL简介 nosql的产生并不是要彻底的代替关系型数据库,而是作为传统关系型数据库的一个补充. Facebook和360使用Cassandra来存储海量社交数据 Twitter在其url抓取 ...

  3. redis简介以及与memcached比较

    一.redis (1)简介: Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.是noSql数据库的一种. re ...

  4. Redis简介以及如何在Windows上安装Redis

    Redis简介 Redis是一个速度非常快的非关系型内存数据库. Redis提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erla ...

  5. Redis简介与安装

    目录 Redis概述与安装使用 Redis概述与安装使用 Author:SimpleWu GitHub-redis Redis简介 Redis英语全称:( REmote DIctionary Serv ...

  6. (转载)Memcached和Redis简介

    转载自: Memcached和Redis简介 博主的Redis资料列表.http://www.cnblogs.com/programlearning/category/1003158.html 前言: ...

  7. 001.Redis简介及安装

    一 Redis简介 1.1 Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key-value 缓存产品有以下三个特点: ...

  8. redis简介及安装配置

    简介 redis是一个开源的高性能键值对数据库.它通过提供多种键值数据类型来适应不同场景下的存储需求,并借助许多高层级的接口使其可以胜任如缓存.队列系统等不同角色. 特性 存储结构:redis是远程字 ...

  9. Redis简介、安装、配置、启用学习笔记

    前一篇文章有介绍关系型数据库和非关系型数据库的差异,现在就来学习一下用的较广的非关系型数据库:Redis数据库 Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-v ...

随机推荐

  1. 史上最全python面试题详解(四)(附带详细答案(关注、持续更新))

    python高级进阶-网络编程和并发(?道题详解) 1.简述 OSI 七层协议. OSI是Open System Interconnection的缩写,意为开放式系统互联. OSI七层协议模型主要是: ...

  2. 【Dojo 1.x】笔记1 入门

    Dojo是个框架 ,是个js框架,现在除了这一点什么都不知道,就这么上手了. ps:不建议Web初学者看我的笔记,这个要有一定积累才能看. 在<body>标签内写这么一点代码: <b ...

  3. cesium 之自定义气泡窗口 infoWindow 篇

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 自 ...

  4. SQLServer\framework启动报异常:Module的类型初始值设定项引发异常

    net framework卸载 重装 https://download.microsoft.com/download/E/4/1/E4173890-A24A-4936-9FC9-AF930FE3FA4 ...

  5. QQ邮箱开启SMTP方法如何授权

    步骤一: 在打开的邮箱中心,进入设置 步骤二 从邮箱设置中心,进入帐户 步骤三 在这里可以看到POP3/SMTP服务被关闭了,因此客户端会收不到邮件,我们来开启它,查看该服务为已开启时,就可以用客户端 ...

  6. c/c++ 多线程 detach的困惑

    多线程 detach的困惑 求大神解答: 1,当在一个函数里启动一个线程后,并detach了 2,detach的线程里使用了这个函数里new出来的一个对象 3,detach后,delete了这个对象 ...

  7. Java中console类的简单用法

    Java.io.Console 只能用在标准输入.输出流未被重定向的原始控制台中使用,在 Eclipse 或者其他 IDE 的控制台是用不了的. import java.io.Console; pub ...

  8. SSH鞋贸商城的设计与实现

    目录 应用技术 需求分析 总体设计 项目UI展示 一.应用技术 ①SSH SSH是 struts+spring+hibernate的一个集成框架,是目前比较流行的一种Web应用程序开源框架.区别于 S ...

  9. ibm z14大型主机介绍

    IBM z14™大型主机 (z14)被设计为数字经济中值得信任的基础架构.它提供  特性和功能以满足对于新服务和更佳客户体验的需求,同时保护日益  增长的数据量,并遵从日益复杂的法规.IBM z14 ...

  10. SQLServer之触发器简介

    触发器定义 触发器是数据库服务器中发生事件时自动执行的一种特殊存储过程.SQLServer允许为任何特定语句创建多个触发器.它的执行不是由程序调用,也不是手工启动,而是由事件来触发,当对数据库进行操作 ...