Redis中的配置文件,数据持久化,事务
作者:MinggeQingchun
一、配置文件
Redis的配置文件存放在Redis的安装根目录下
Windows 版本的 Redis 是 Microsoft 的开源部门提供的 Redis. 这个版本的 Redis 适合开发人员学习使用,生产环境中使用 Linux 系统上的 Redis;博主直接在本机上安装操作
Windows下是 redis.windows-service.conf;Linux下是 redis.conf
1、Redis 的网络相关配置
(1)bind:绑定IP地址,其它机器可以通过此IP访问Redis,默认绑定127.0.0.1,也可以修改为本机的IP地址
(2)port:配置Redis占用的端口,默认是6379
(3)tcp-keepalive:TCP连接保活策略,可以通过tcp-keepalive配置项来进行设置,单位为秒,假如设置为60秒,则server端会每60秒向连接空闲的客户端发起一次ACK请求,以检查客户端是否已经挂掉,对于无响应的客户端则会关闭其连接
如果设置为0,则不会进行保活检测。
2、Redis的常规配置
(1)loglevel:日志级别,开发阶段可以设置成debug,生产阶段通常设置为notice或者warning
(2)logfile:指定日志文件名,如果不指定,Redis只进行标准输出。要保证日志文件所在的目录必须存在,文件可以不存在。还要在redis启动时指定所使用的配置文件,否则配置不起作用
(3)databases:配置Redis数据库的个数,默认是16个
3、Redis的安全配置
requirepass:配置Redis的访问密码。默认不配置密码,即访问不需要密码验证
此配置项需要在protected-mode=yes时起作用
使用密码登录客户端:redis-cli -h ip -p 6379 -a pwd
二、数据持久化
redis是内存数据库,它把数据存储在内存中,这样在加快读取速度的同时也对数据安全性产生了新的问题,即当redis所在服务器发生宕机后,redis数据库里的所有数据将会全部丢失。
为了解决这个问题,redis提供了持久化功能——RDB和AOF(Append Only File)
1、RDB
RDB(Redis DataBase)是 Redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis重启会通过加载dump.rdb文件来恢复数据
save <seconds> <changes>:配置复合的快照触发条件,即Redis 在seconds秒内key改变changes次,Redis把快照内的数据保存到磁盘中一次。默认的策略是:
- 15分钟内改变了1次
- 或者5分钟内改变了10次
- 或者1分钟内改变了1万次
如果要禁用Redis的持久化功能,则把所有的save配置都注释掉
2、AOF
AOF(Append Only File),Redis 默认不开启。它的出现是为了弥补RDB的不足(数据的不一致性),所以它采用日志的形式来记录每个写操作,并追加到文件中。
Redis 重启会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。
Redis以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录)
AOF保存的文件是appendonly.aof文件
appendonly
:配置是否开启AOF,yes表示开启,no表示关闭。默认是no。appendfilename
:AOF保存文件名appendfsync
:AOF异步持久化策略
三、事务
事务:把一组数据库命令放在一起执行,保证操作原子性,要么同时成功,要么同时失败。
Redis的事务:允许把一组redis命令放在一起,把命令进行序列化,然后一起执行,保证部分原子性
Redis事务的常用命令:
1、multi
用于标记事务块的开始。Redis会将后续的命令逐个放入队列中,然后才能使用EXEC命令原子化地执行这个命令序列
2、exec
在一个事务中执行所有先前放入队列的命令,然后恢复正常的连接状态。
如果在把命令压入队列的过程中报错,则整个队列中的命令都不会执行,执行结果报错;
如果在压队列的过程中正常,在执行队列中某一个命令报错,则只会影响本条命令的执行结果,其它命令正常运行;
当使用WATCH命令时,只有当受监控的键没有被修改时,EXEC命令才会执行事务中的命令;而一旦执行了exec命令,之前加的所有watch监控全部取消
3、discard
清除所有先前在一个事务中放入队列的命令,并且结束事务。
如果使用了WATCH命令,那么DISCARD命令就会将当前连接监控的所有键取消监控
4、watch
watch key [key …]
当某个事务需要按条件执行时,就要使用这个命令将给定的键设置为受监控的。
如果被监控的key值在本事务外有修改时,则本事务所有指令都不会被执行。
Watch命令相当于关系型数据库中的乐观锁
5、unwatch
清除所有先前为一个事务监控的键。
如果在watch命令之后你调用了EXEC或DISCARD命令,那么就不需要手动调用UNWATCH命令
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。