Redis:部署安装及常用命令

文章目录

    • Redis 概述
    • Redis 数据恢复的两种方式
    • RDB和AOF优缺点及适用场景
    • Redis 部署安装
          • 1、首先下载gcc等相关的环境包,以及redis源码包
          • 2、编译 安装 redis,并建立软连接 便于系统识别。
          • 3、配置各种配置文件 日志文件等 存放路径
    • Redis 数据库 常用命令
          • 1、help 命令
          • 2、set 与 get 命令
          • 3、key 命令
          • 4、exits 命令
          • 5、del 命令
          • 6、type 命令
          • 7、rename 命令
          • 8、renamenx 命令
          • 9、dbsize 命令
          • 10、数据库之间切换、移动数据 命令
          • 11、清除数据库内数据

Redis 概述

远程字典服务器(Remote Dictionary Server, Redis)是一款由ANSI C语言编写、遵守BSD协议、支持网络访问、基于系统内存的开源软件,同时,Redis也是支持日志型和Key-Value键值对类型数据持久化的数据库。由于Redis中存储的Value值类型可以是字符串(String)、哈希(HASH)、列表(List)、集合(Sets)和有序集合(Sorted Sets)等类型,因此Redis通常也被称为数据结构服务器。
与Memcache缓存系统类似,为了保证高效的数据存取效率,Redis的数据都被缓存在内存中,但是Redis与Memcache在处理数据存储方式上有很大的差异,即Redis默认会周期性地把缓存中更新的数据写入磁盘进行永久保存,并将对缓存数据的修改操作追加到日志文件中,由于Redis本质上就是一个基于内存的数据库,因此Redis具备很多如日志记录等通用数据库的共性。Redis为了实现数据高可用,其利用已存入磁盘中的数据在不同节点之间进行同步操作,从而实现了Master-Slave模式的主从数据高可用,Redis的数据可以从Master服务器向任意数量的Slave服务器上进行同步。
相对Memcache缓存,Redis还提供了更多的语言支持,包括对Java、C/C++/C#、PHP、JavaScript、Perl、Object-C、Python、Ruby和Erlang等语言客户端API的支持。Redis数据交换在Redis缓存系统中,并非所有通过Redis客户端写入的数据都永久性地存储在物理内存中,这是Redis和Memcache缓存系统最为明显的区别,Redis会定期性地将物理内存中的数据写入磁盘。
由于相对磁盘存储,内存空间极其有限,为此,Redis实现了用虚拟内存(VM,Virtual Memory)机制来扩充逻辑可用的内存空间,当Redis认为物理内存空间使用量达到某个预设值时,Redis将自动进行内存页的交换(Page Swap)操作,从而将缓存中的数据写入磁盘中。通常在部署使用Redis时候,会根据系统实际物理内存的大小为其设置一个物理内存使用阈值,如果Redis发现物理内存的使用量超过了这个阀值,将会触发Redis的Swap操作,在数据交换过程中,Redis会根据一定的算法(如最少使用算法LRU)计算出哪些Key对应的Value需要交换到磁盘,之后就将这些Key对应的Value持久化到磁盘中,同时在内存中将其清除。Redis的VM机制使得Redis可以存储超过系统本身物理内存大小的数据。

Redis 数据恢复的两种方式

Redis最显著的功能特点之一便是数据持久化功能,在Redis节点重新启动之后,丢失的缓存数据会从磁盘重新加载或者从日志文件中重新恢复,这一功能非常类似于商业数据库软件(如DB2和Oracle)的日志恢复功能。针对两种不同的缓存数据恢复方式,Redis提供了两种数据持久化的方式,分别是Redis数据库方式(RDB, Redis DataBase)和日志文件方式(AOF, Append Only File)。RDB持久化方式就是将Redis缓存数据进行周期性的快照,并将其写入磁盘等永久性存储介质中,而AOF采用的是与RDB完全不一样的数据持久化方式
在AOF方式下,Redis会将所有对缓存数据库进行数据更新的指令全部记录到日志文件中,待Redis重新启动时,Redis将会把日志文件中的数据更新指令从头到尾重复执行一遍,这是一个重现数据变更的过程,当执行到日志文件末尾时即可实现缓存数据的恢复,AOF恢复方式与DB2数据库的redo日志回滚恢复方式原理类似。
这里重点讲解AOF持久化方式:
AOF是一种操作日志记录形式的持久化方式,并且AOF的记录日志文件只允许往后追加不允许改写已记录的条目。AOF持久化方式的原理,就是将Redis执行过的数据更新指令追加到日志文件中,并在数据恢复时按照先后顺序将指令都执行一遍,即再现一次数据的缓存过程,从而将数据恢复到故障点。
AOF方式的开启很简单,只需将Redis配置文件Redis.conf中的appendonly设置为yes就可以打开Redis的AOF持久化功能,在开启AOF之后,如果对Redis缓存发起写请求(如SET命令),则Redis就会将SET命令作为一个新的记录追加到AOF文件的末尾。默认情况下,AOF持久化策略每秒进行一次日志文件的追加操作,并将缓存中的写指令记录到磁盘AOF文件中,因此,在默认AOF持久化情况下,当Redis故障恢复时,也仅有将近1秒钟的数据丢失。

RDB和AOF优缺点及适用场景

Redis的两种持久化方式各有优缺点,用户可以选择其中一种进行Redis缓存数据的持久化,也可以同时使用RDB和AOF持久化数据,Redis官方推荐用户同时使用RDB和AOF。RDB的优点在于周期性批量进行持久化,恢复时只需将快照文件读入内存,因此恢复过程快速简单,但是由于存在快照周期,RDB方式很难保证数据恢复的完整性。与RDB相比,AOF方式在数据恢复的完整性上要高很多,但是在同等数据规模的情况下,AOF方式在数据恢复时,由于要重现日志文件中记录的全部操作,其恢复速度比RDB方式要慢很多。

在Redis的数据交换过程中,由于Redis会将部分Key对应的Value通过Swap操作写入磁盘中,因此当命中的Key所对应的Value未存储在物理内存中时,Redis就要通过Swap操作将数据从磁盘读回物理内存,然后再响应客户端请求。而在这种情况下,通常会出现I/O线程池的问题,默认情况下,Redis会使用阻塞方式来使I/O请求等待Swap操作将全部所需的Value数据块读回内存,然后才进行下一步操作,Redis的这种阻塞策略在少量客户端和批量操作情况下并无太大问题,但是在大型并发网站中,尤其是在大量并发随机小数据块请求的情况下,如果有很多命中Key对应的Value值都没有存储在物理内存中,则Redis的阻塞响应机制必然导致整个网站的访问请求极为缓慢,通常这种情况下必须设置Redis的运行I/O线程池,从而使得Redis并发进行磁盘到物理内存的数据读回操作,从而减少请求I/O的阻塞时间,提高网站的访问速率。

Redis 部署安装

1、首先下载gcc等相关的环境包,以及redis源码包

这里已经下载下来,只需要共享出来,就可以使用。

2、编译 安装 redis,并建立软连接 便于系统识别。
3、配置各种配置文件 日志文件等 存放路径

Redis:部署安装及常用命令

Redis 数据库 常用命令

远程主机连接数据库,需要在配置文件中添加监听地址

现在就可以登录redis客户端
1、help 命令

使用 help 命令可以获取命令类型的帮助, 其中 有三种获取命令帮助的方式

2、set 与 get 命令

Redis 数据库采用 key-value(键值对) 的数据存储形式
●set: 存放数据, 基本的命令格式为: set key value
●get: 获取数据, 基本的命令格式为: get key

如执行” set teacher zhanglong”, 表示在当前数据库下存放一个 key 为 teacher, value 为 zhanglong 的数据, 执行“get teacher“命令即可查看刚才存放的数据

Redis:部署安装及常用命令
Redis:部署安装及常用命令
5、del 命令

del 命令可以删除当前数据库的指定 key

Redis:部署安装及常用命令
7、rename 命令

rename 命令是对已有 key 进行重命名,无论目标 key 是否存在都进行重命名,且源 key 的值会覆盖目标 key 的值,并且源key的值不存在了。 在实际使用过程中,建议先用 exists 命令查看目标 key 是否存在, 然后再决定是否执行 rename 命令, 以避免覆盖重要数据。

Redis:部署安装及常用命令
9、dbsize 命令

dbsize 命令的作用是查看当前数据库中 key 的数目

Redis:部署安装及常用命令

Redis 的多数据库在一定程度上是相对独立的, 例如在数据库 0 上面存放的 k1 的数据,
在其它的 1-15 的数据库上是无法查看到的。

Redis:部署安装及常用命令
11、清除数据库内数据

数据清空操作比较危险!!! 生产环境下不建议使用!!!
Redis 数据库的整库数据删除主要分为两个部分:
清空当前数据库数据,使用 FLUSHDB命令实现;
清空所有数据库的数据,使用 FLUSHALL 命令实现。
这里就不演示了。

来源:中o诚

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年2月16日
下一篇 2020年2月17日

相关推荐