multi
标记一个事务的开始,多条命令会按照先后顺序放进一个队列中,总返回OK
exec
执行所有事务块的命令
事务内的所有执行语句内容,事务被打断返回nil
discard
(当事务队列内的语句写到一半不想写了)取消事务,放弃事务内的所有命令,总返回OK
当遇到语法错误时,事务就会被放弃
当语法没错,但执行会出错时,redis不会回滚,前面正确的命令会正常执行
watch key…
监视一个或多个key,如果在事务执行前这些key被其他命令所改动,那么事务将会被打断。总是返回OK
unwatch
取消watch命令对所有key的监视
比如这里我对k5这个key添加监视,然后在可视化工具里修改k5的值
可以看到事务执行失败。
单保存在内存中,若突然系统问题出现关机,会导致数据丢失,所以保存在硬盘中能保证数据安全。
Redis Database(RDB),数据快照写入磁盘。
保存数据是在单独的进程中写文件,不会影响Redis的正常使用。RDB恢复数据比其他AOF(将命令写入日志)速度快
在配置文件redis.conf中搜索SNAPSHOTTING可以看到关于RDB的配置说明。配置Redis生成快照文件的时间策略,格式如下
save <seconds> <changes>
表示在seconds秒内至少发生了changes个key的改动这一条件被满足时,就会启动生成保存
在配置文件中有如下三列默认配置
save 900 1
save 300 10
save 60 10000
另外,
dbfilename属性对应RDB的文件名,默认为dump.rdb
dir指定RDB文件的存储位置,默认为./,当前目录
缺点:会丢失未满足条件而发生保存的数据。
优点:性能高。
如果不想有丢失数据的风险,采用AOF方式
每次接收到一条改变数据的命令时,就会把该命令写到一个AOF文件中,当redis重启时,可以通过执行AOF中的所有命令恢复数据
AOF功能默认为关闭状态,需要在redis.conf文件中配置
若因某条命令让redis关闭,重启前可以对aof文件修改,删除这条命令,重启redis会自动执行该文件中的命令恢复数据
为了避免单点故障,需要将数据复制多份到多台不同的服务器上,当有一台服务器上的数据更新后,自动将更新的数据同步到其他的服务器上。
将redis服务器集群分为一个主服务器和一些从服务器,主服务器复制进行写操作并把写入的数据实时同步到从服务器,从服务器负责用于读操作。
实现
复制三份配置文件,修改不同的端口号,运行redis-server时带上配置文件的参数,即可模拟多台redis服务器的环境。
配置主redis服务器(Master)
在空文件中加入下面内容
配置从redis服务器(Slave)
加入如下内容
info replication命令可以查看当前的服务器的状态信息
不能在从服务器Slave上进行写操作,会提示操作失败。
当Master服务出现故障,需手动将slave中的一个提升为master,剩下的slave挂至新的master上
步骤
slaveof no one
slaveof ipaddress port
指定新的master服务地址
redis官方提供了解决问题的高可用方案
哨兵(多个单独运行)
它有三个主要任务
配置:
同样是改配置文件,ip地址什么的,大同小异
访问Redis默认没有密码,这样不安全,可以通过修改redis.conf配置文件设置密码
requirepass对应的就是密码
设置密码后用客户端工具cli登陆
需要在后面添加
-a password
参数登陆
或者使用auth password
绑定ip
同样是配置文件
bind这项对应的就是允许访问你redis的ip地址,默认bind 127.0.0.1,只允许本机访问。若想允许多个ip地址可以用空格分隔。
修改端口
使用默认的端口比较危险,在配置文件中把
port xxxx
这行端口修改为自己可以指定的端口,范围是1024-65535
使用
./redis-cli -p xxxx
指定端口号启动