Redis数据库配置优化及常用命令
一、Redis概论
Redis 简介
Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:·
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
Redis 优势
- 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
- 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
- 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
Redis与其他key-value存储有什么不同?
- Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
- Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。
二、Redis安装配置
1.通过XShell导入redis安装包到/opt下
2.编译安装redis
[root@localhost opt]# tar zxvf redis-5.0.7.tar.gz
[root@localhost ~]# cd redis-5.0.7/
[root@localhost redis-5.0.7]# make
[root@localhost redis-5.0.7]# make PREFIX=/usr/local/redis install
3.进行路径优化,执行安装脚本
[root@localhost ~]# ln -s /usr/local/redis/bin/* /usr/local/bin/
[root@localhost opt]# ls
redis-5.0.7 redis-5.0.7.tar.gz rh
[root@localhost opt]# cd redis-5.0.7/utils
[root@localhost utils]# ./install_server.sh
Welcome to the redis service installer
This script will help you easily set up a running redis server
Please select the redis port for this instance: [6379] ##默认端口
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] ##配置文件
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log] ##日志文件
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379] ##数据文件
Selected default - /var/lib/redis/6379
Please select the redis executable path [] /usr/local/redis/bin/redis-server
查看端口
[root@@localhost utils]# netstat -luntp | grep redis
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 88573/redis-server
开启服务
[root@@localhost utils]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@@localhost utils]# netstat -anpt | grep redis
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 11623/redi-server
4.将本机IP添加到监听窗口
[root@localhost ~]# vi /etc/redis/6379.conf
69 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
70 bind 127.0.0.1 192.168.253.11 #将IP添加到bind后
71
72 # Protected mode is a layer of security protection, in order to avoid that
5.重启服务并登录
[root@localhost ~]# /etc/init.d/redis_6379 restart
Stopping ...
Waiting for Redis to shutdown ...
Redis stopped
Starting Redis server...
[root@localhost ~]# redis-cli # 本地登录
127.0.0.1:6379>
[root@localhost ~]# redis-cli -h 192.168.253.11 -p 6379 # 远程登录
192.168.253.11:6379>
三、常用命令
-
set 存放数据
-
get 提取数据
-
type 查看数据类型
-
keys * 查看当前数据库中的所有键
-
更改值
-
rename 对已有key重命名
-
keys v* 查看以v开头的数据
-
keys v? 查看以v开头包含任意一位的数据
- keys v?? 查看以v开头包含任意两位的数据
- exists 判断键值是否存在,“1”代表存在,“0”代表不存在
- del 删除指定键
- info memory 查看Redis内存使用
四、Redis持久化
持久化概述
- Redis是运行在内存中,内存中的数据断电丢失
- 为了能够重用Redis数据,或者防止系统故障,需要将Redis中的数据写入到磁盘空间中,即持久化
持久化分类
- RDB方式:创建快照的方式获取某一时刻Redis中所有数据的副本
- AOF方式:将执行的写命令写到文件的末尾,以日志的方式来记录数据的变化
RDB持久化
1.是Redis的默认持久化方式
2.默认文件名dump.rdb
3.触发条件:
- 在指定的时间间隔内,执行指定次数的写操作(配置文件控制)
- 执行save或者是bgsave(异步)命令
- 执行flushall命令,清空数据库所有数据
- 执行shutdown命令,保证服务器正常关闭且不丢失任何数据
4.优缺点:
- 适合大规模的数据恢复
- 如果业务对数据完整性和一致性要求不高,RDB是很好的选择
- 数据的完整性和一致性不高
- 备份时占用内存
通过RDB文件恢复数据
将dump.rdb文件拷贝到redis的安装目录的bin目录下,重启redis服务即可
配置文件选项:
vim /etc/redis/6379.conf
217 # save ""
218
219 save 900 1 #900秒之内至少一次操作
220 save 300 10 #300秒之内至少发生10次写操作
221 save 60 10000 #60秒之内发生至少10000次写操作
222 #以上只要满足其一都会触发快照操作,注释所有的save项表时关闭RDB
223 # By default Redis will stop accepting writes if RDB snapshots are enabled
253 # The filename where to dump the DB
254 dbfilename dump.rdb #RDB文件名称
255
256 # The working directory.
263 # Note that you must specify a directory here, not a file name.
264 dir /var/lib/redis/6379 #RDB文件路径
265
266 ################################# REPLICATION #################################
241 # the dataset will likely be bigger if you have compressible values or keys.
242 rdbcompression yes #是否进行压缩
243
244 # Since version 5 of RDB a CRC64 checksum is placed at the end of the file.
AOF持久化
- Redis 默认不开启
- 弥补RDB的不足(数据的不一致性)
- 采用日志的形式来记录每个写操作,并追加到文件中
- Redis 重启会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作
根据AOF文件恢复数据
将appendonly.aof文件拷贝到Redis的安装目录的bin目录下,重启Redis服务即可
配置文件选项:
vim /etc/redis/6379.conf
700 appendonly yes #开启AOF持久化
701
702 # The name of the append only file (default: "appendonly.aof")
703
704 appendfilename "appendonly.aof" #AOF文件名称
729 # appendfsync always # always:同步持久化,每次发生数据变化会立刻写入磁盘
730 appendfsync everysec # everysec:默认推荐,每秒异步记录一次(默认值)
731 # appendfsync no # no:不同步交给操作系统决定如何同步
796 aof-load-truncated yes #忽略最后一条可能存在问题的指令