redis简介与持久化
一 . 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简介与持久化的更多相关文章
- Redis简介及持久化
Redis是一个key-value数据库,他不仅性能强劲,而且还具有复制特性以及为解决问题而生的独一无二的数据模型.可用于缓存.消息队列.发布.订阅消息.商品列表和评论列表等场景.Redis提供了5种 ...
- Redis简介、与memcached比较、存储方式、应用场景、生产经验教训、安全设置、key的建议、安装和常用数据类型介绍、ServiceStack.Redis使用(1)
1.NOSQL简介 nosql的产生并不是要彻底的代替关系型数据库,而是作为传统关系型数据库的一个补充. Facebook和360使用Cassandra来存储海量社交数据 Twitter在其url抓取 ...
- redis简介以及与memcached比较
一.redis (1)简介: Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.是noSql数据库的一种. re ...
- Redis简介以及如何在Windows上安装Redis
Redis简介 Redis是一个速度非常快的非关系型内存数据库. Redis提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erla ...
- Redis简介与安装
目录 Redis概述与安装使用 Redis概述与安装使用 Author:SimpleWu GitHub-redis Redis简介 Redis英语全称:( REmote DIctionary Serv ...
- (转载)Memcached和Redis简介
转载自: Memcached和Redis简介 博主的Redis资料列表.http://www.cnblogs.com/programlearning/category/1003158.html 前言: ...
- 001.Redis简介及安装
一 Redis简介 1.1 Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key-value 缓存产品有以下三个特点: ...
- redis简介及安装配置
简介 redis是一个开源的高性能键值对数据库.它通过提供多种键值数据类型来适应不同场景下的存储需求,并借助许多高层级的接口使其可以胜任如缓存.队列系统等不同角色. 特性 存储结构:redis是远程字 ...
- Redis简介、安装、配置、启用学习笔记
前一篇文章有介绍关系型数据库和非关系型数据库的差异,现在就来学习一下用的较广的非关系型数据库:Redis数据库 Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-v ...
随机推荐
- C# 如何更改Word语言设置
一般在创建或者打开一个Word文档时,如果没有进行过特殊设置的话,系统默认的输入语言的是英语输入,但是为适应不同的办公环境,我们其实是需要对文字嵌入的语言进行切换的,因此,本文将介绍如何使用免费版组件 ...
- Java开发笔记(七十七)使用Optional规避空指针异常
前面在介绍清单用法的时候,讲到了既能使用for循环遍历清单,也能通过stream流式加工清单.譬如从一个苹果清单中挑选出红苹果清单,采取for循环和流式处理都可以实现.下面是通过for循环挑出红苹果清 ...
- mysql报错:java.sql.SQLException: Incorrect string value: '\xE4\xB8\x80\xE6\xAC\xA1...' for column 'excelName' at row 1
一.问题 用Eclipse做项目时候报错 java.sql.SQLException: Incorrect string value: '\xE4\xB8\x80\xE6\xAC\xA1...' fo ...
- Fundebug发布Vue插件,简化BUG监控接入代码
摘要: 代码越短越好! 我们发布了fundebug-vue插件,可以简化Vue框架接入Fundebug的代码. Vue如何接入Fundebug 1. 安装fundebug-javascript与fun ...
- DIV+CSS初学随记
字间隔word-spacing 属性可以改变字(单词)之间的标准间隔.其默认值 normal 与设置值为 0 是一样的. word-spacing 属性接受一个正长度值或负长度值.如果提供一个正长度值 ...
- 2019-02-10 扩展Python控制台实现中文反馈信息
"中文编程"知乎专栏原文地址 参考了周蟒的实现, 运行效果如下: $ python3 解释器.py Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 ...
- 轻量级应用程序Dynamics 365 App for Outlook介绍
摘要: 本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复273或者20180625可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyon ...
- Xamarin 学习笔记 - Page(页面)
本文翻译自CodeProject文章:https://www.codeproject.com/Articles/1226447/Xamarin-Notes-Xamarin-Forms-Pages 转载 ...
- iOS----------APP怎样做更安全
1 网络请求的安全方案 1.1 https请求,最好有安全交互平台. 1.2 对重要的参数请求进行加密(推荐AES,ERSA加密). 1.3 服务器返回数据时,对重要数据进行加密. 1.4 不要把密钥 ...
- Bitmap上下合成图片
合成两张图片,上下叠加的效果: /** * 把两个位图覆盖合成为一个位图,以底层位图的长宽为基准 * * @param backBitmap 在底部的位图 * @param frontBitmap 盖 ...