1.redis是什么?

redis是非关系型数据库key-value数据库,开源免费。是当下NoSQL技术之一

2.redis能干吗?

(1)内存存储,可以持久化,redis存储在内存中,内存的话是断电即丢失,所以redis支持持久化以至于数据不会丢失,

(2)高效,可用于高速缓存

(3)地图信息分析

(4)计时器

3.redis特点

(1)多样的数据类型

(2)持久化

(3)集群

(4)事务

4.redis安装

(1)yum install epel-release

(2)yum install -y redis

(3)启动redis.       systemctl restart redis

(4)进入redis       redis-cli

5.查看配置文件。默认在/etc/redis.conf

redis默认端口:6379

daemonize no改成yes

6.登录redis

[root@mysql redis-6.0.6]# redis-cli

7.测试redis连通性

127.0.0.1:6379> ping

PONG

8.数据库操作命令:

设置值和查看值: set name zhao

127.0.0.1:6379> get name

"zhao"

查看所有的键

127.0.0.1:6379> keys *

1) "age"

2) "name"

删除当前库的key:flushdb

删除所有库的key:flushall

查看当前库的大小:DBSIZE

切换到其他库:select  数据库    例子:select 3

判断某个key是否存在:EXPIRE key    返回1就是存在,返回0就是不存在

例子:127.0.0.1:6379> EXISTS name

(integer) 1          存在

127.0.0.1:6379> EXISTS AA

(integer) 0         不存在

移除某个key:move  key  key的值  例子:move name 1

设置过期时间:EXPIRE  key名  过期时间(秒)

例子:127.0.0.1:6379> keys *

1) "age"

2) "name"                   #查看当前的key

127.0.0.1:6379> EXPIRE age 10

(integer) 1             #设置age这个key10秒后过期

查看还剩余多长时间过期:ttl  key名

查看redis密码:config get requirepass

修改密码:config set requirepass   密码

9.redis的两种持久化机制

(1)RDB:把当前时间内,把内存中的数据生成快照,存入磁盘中,恢复时候是把rdb文件恢复到内存中去,redis默认是开启的rdb,缺点是最后一次持久化后的数据会丢失

rdb保存文件格式:dump.rdb

快照生成存放在/var/lib/redis文件下

触发rdb快照的两种方式:手动触发和自动触发

手动触发(1)在redis里执行save,不过会阻塞当前redis服务器,不建议使用

(2)bgsave,redis进程执行fork操作创建子进程,子进程持久化操作,阻塞只发生在fork阶段,一般时间很短

自动触发(1)使用save相关配置 save m n 标识m秒内 数据存在n次修改,自动触发自动保存

             (2)从节点全量复制时也会执行自动保存
             (3)redis发生错误重启redis时,也会触发save操作
             (4)执行关机操作时shutdown
             (5)flushall触发

执行过程:父进程正常处理客户端请求,同时fork出一个子进程,过程中父进程发生阻塞不过耗时很短,可以通过info  stats的last_fork_usec可获取最近一次fork的耗时。子进程创建rdb文件,替换老的rdb文件,执行lastsave可获取最后一次生成rdb文件的时间。子进程通知父进程更新完毕,父进程更新文件

如何恢复rdb快照文件:把rdb文件放到/var/lib/redis下就可以恢复

rdb文件优缺点:

优点:rdb恢复数据快,redis代表某个时间点的数据快照,适用于备份

缺点:各个版本RDB存在兼容问题,且没办法实时持久化,如果redis意外宕机,最后一次修改的数据就丢失了

(2)AOF:AOF以独立日志方式记录每次写的命令,重启时在执行AOF文件中的命令,目前是redis持久化的主流方式

aof保存文件格式:appendonly.aof

如何开启aof持久化,只要把配置文件的appendonly   改成yes就可以

如何恢复aof文件,在/bin目录下,找到redis-check-aof文件,执行redis-check-aof --fix appendonly.aof即可修复

aof持久化过程:

1.执行AOF重写请求
2.父进程执行fork创建子进程,过程中发生阻塞
3.1 主进程fork操作完成后,继续接受响应请求,命令写入aof_buf缓存区中             (同时执行)
3.2 fork 利用写时复制技术,子进程只能共享fork操作时的内存数据                         (同时执行)
4.子进程根据内存快照,按照命令合并规则写入新的aof
5.1 aof写入完成之后,通知父进程                                                                       (同时执行)
5.2 父进程把aof重写缓冲区的数据写入新的aof文件                                            (同时执行)
5.3 使用新aof文件替换老文件,完成aof重写                                                       (同时执行)

aof持久化优缺点

优点:实时持久化

缺点:恢复数据慢

redis 基础1的更多相关文章

  1. windows下使用redis,Redis入门使用,Redis基础命令

    windows下使用redis,Redis入门使用,Redis基础命令 >>>>>>>>>>>>>>>> ...

  2. [.net 面向对象程序设计深入](14)Redis——基础

    [.net 面向对象程序设计深入](14)Redis——基础 很长一段时间没更新博客了,坚持做一件事,真不是件容易的事,后面我会继续尽可能的花时间更新完这个系列文章. 因这个系列的文章涉及的范围太大了 ...

  3. linux redis基础应用 主从服务器配置

    Redis基础应用 redis是一个开源的可基于内存可持久化的日志型,key-value数据库redis的存储分为内存存储,磁盘存储和log文件三部分配置文件中有三个参数对其进行配置 优势:和memc ...

  4. [.net 面向对象程序设计深入](36)Redis——基础

    [.net 面向对象程序设计深入](36)Redis——基础 很长一段时间没更新博客了,坚持做一件事,真不是件容易的事,后面我会继续尽可能的花时间更新完这个系列文章. 因这个系列的文章涉及的范围太大了 ...

  5. mysql主从复制、redis基础、持久化和主从复制

    一.mysql(mariadb)基础 1.基础命令(centos7操作系统下) 1.启动mysql systemctl start mariadb 2.linux客户端连接自己 mysql -uroo ...

  6. Redis基础用法、高级特性与性能调优以及缓存穿透等分析

     一.Redis介绍 Redis是一个开源的,基于内存的结构化数据存储媒介,可以作为数据库.缓存服务或消息服务使用.Redis支持多种数据结构,包括字符串.哈希表.链表.集合.有序集合.位图.Hype ...

  7. Redis基础知识补充及持久化、备份介绍(二)--技术流ken

    Redis知识补充 在上一篇博客<Redis基础认识及常用命令使用(一)--技术流ken>中已经介绍了redis的一些基础知识,以及常用命令的使用,本篇博客将补充一些基础知识以及redis ...

  8. Spring-Boot之Redis基础

    Spring-Boot之Redis基础 准备 Redis下载地址:github.com/MSOpenTech/redis/releases Redis数据库的默认端口号是 6379 开启Redis服务 ...

  9. mongodb,Mysql,redis基础教程

    数据库基础 1:mongodb基础教程 1:pymongo基础教程  2:Mysql基础教程 3:redis基础教程

  10. Redis基础知识点面试手册

    Redis基础知识点面试手册 基础 概述 数据类型 STRING LIST SET HASH ZSET(SORTEDSET) 数据结构 字典 跳跃表 使用场景 会话缓存 缓存 计数器 查找表 消息队列 ...

随机推荐

  1. SVN之屏蔽不需要提交的xml等文件

    SVN之屏蔽不需要提交的xml等文件 在默认"Default changelist"中是我们正常需要提交的文件 在"不需要提交的文件"中存储的是一些线下环境需要 ...

  2. 付费漫画下载、付费韩漫下载、漫画VIP下载、VIP韩漫下载哪里下

    需要的 来qq:6686496 最近迷上了韩漫(你懂的),主要为了打发时间上班摸鱼,,找了好多网站都是要收费的,就想着试着用爬虫做一个破解. 最简单的第一步,通过url分析出漫画ID.(直接看url就 ...

  3. Vue中获取元素宽高

    <div ref="init"></div> 写在 页面 方法 部分 这里的 offsetHeight 是返回元素的宽度(包括元素宽度.内边距和边框,不包括 ...

  4. EDM响应式邮件框架:MJML

    概述 新课题研究:响应式邮件框架MJML(MJML官网:https://mjml.io/)姐妹篇: EDM响应式邮件框架:Formerly Ink 介绍 MJML是一种标记语言,设计用于轻松实现一个响 ...

  5. new String比字符串池浪费空间,为什么要用它?

    对于下面程序中:ss0 = new String( "hello" );是用new()来新建对象的,存于堆中.每调用一次就会创建一个新的对象.当然从节省空间的角度来讲,肯定不如st ...

  6. PAT B1002写出这个数

    读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 1. 输出格式: 在一行内输出 n 的 ...

  7. Java类型转换详解

    Java类型转换详解 最近有同学问:自动类型转换老是记不住,到底是大转小,还是小转大 其实这个不用死记硬背,很好理解,我们拿 int 和 short 来举例: int 是 4 字节,也就是 32 bi ...

  8. 攻防世界——gif

    分析 只有黑白两种颜色,大小均一样.考虑代表着二进制. python脚本 ''' 同样颜色的图片的二进制数据都相同 编写思路:取二进制 -> 转ascii码 ''' white = open(r ...

  9. 两个线程交替运行——使用synchronized+wait+notify实现

    public class ExecuteThread { private static Object obj = new Object(); private static boolean flag; ...

  10. CuteBot智能小车

    原因 近期,别人送了我一个CuteBot智能小车,拆开一看做工挺精致的,但是这东西是积木图形编程,显然不适合我这个年龄,所以打算给家里的小孩玩. 那么,你可能会问了,为什么要写这篇文章呢?答案当然是用 ...