CONFIG SET requirepass 123456
requirepass 123456
auth 123456
单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。
Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:
一个事务从开始到执行会经历以下三个阶段:
当执行multi
命令将会开启事务,那么所有命令就会加入事务队列暂存,不会真正的直接执行,如果遇到exec
就会把队列中的命令依次执行-提交事务,需要注意的是即使有的命令执行失败了,也不会影响其他命令的执行结果-不回滚,但是如果遇到discard就会放弃执行队列中的命令-取消事务 , 如下:
multi #开启事务
set name zs #添加字符串值
set age 18 #添加数字值
incr name #name的值+1
incr age #age的值+1
exec #提交事务,开启 multi 后的所有命令将被执行,如果有命令失败了也不会回滚成功的命令依然成功
#incr name命令会执行失败因为字符串是不能+1的,incr age命令会执行成功,age的值是数字能+1
get name #返回zs
get age #返回19
discard #取消事务,开启multi后的所有命令将取消执行
get name #会返回空值
get age #会返回空值
Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。Redis 客户端可以订阅任意数量的频道。没订阅的接收者当然是接收不到消息的,(pub/sub)是一种广播模式,及会把消息发送给所有的订阅者
消息接收者通过 SUBSCRIBE channel
命令订阅某个频道 , 消息发布者通过 PUBLISH channel message
向该频道发布消息,那么订阅了该频道的所有接收者就可以收到消息。
SUBSCRIBE cctv #cctv作为订阅的频道,可以任意定义名字
PUBLISH cctv '我是消息,发往cctv频道,over'
观察redis-cli接受者应该能收到消息内容“我是消息,发往cctv频道,over”
因为Redis数据基于内存读写,为了防止Redis服务器关闭或者宕机造成数据丢失,我们通常需要对Redis最磁极化,即:把内从中的数据(命令)保存一份到磁盘做一个备份,当Redis服务关闭或者宕机,
在Redis服务器重启的时候会从磁盘重新加载备份的数据,不至于数据丢失。 Redis 提供了两种不同级别的持久化方式:RDB和AOF,可以通过修改redis.conf来进行配置.
开启持久配置后,对Redis进行写操作,在Redis安装目录将会看到持久文件:“appendonly.aof”和“ dump.rdb”。
redis为了考虑效率,保存数据在内容中.并且考虑数据安全性,还做数据持久化,如果满足保存策略,就会把内存的数据保存到数据rdb文件,还来不及保存那部分数据存放到aof更新日志中。在加载时,把两个数据做一个并集。
RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照,默认开启该模式
save ""
# save 900 1 #至少在900秒的时间段内至少有一次改变存储同步一次
# save xxx
# save 60 10000
AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集,默认关闭该模式。
appendonly yes #yes 开启,no 关闭
# appendfsync always #每次有新命令时就执行一次fsync
appendfsync everysec #每秒 fsync 一次 ,这里我们启用 everysec
# appendfsync no #从不fsync(交给操作系统来处理,可能很久才执行一次fsync)
#其它的参数请大家看redis.conf配置文件详解
- bind # 指定的ip才能访问
- port #默认端口
- timeout #连接超时
- loglevel #日志的级别
- logfile #日志文件输出路径
- databases #数据库数量
- save 900 1 #RDB持久方式,900 秒有一个数据修改进行持久化
- appendonely #AOF持久方式
根据业务情况修改配置文件中的持久化配置项目即可
虽然配置了持久化Redis会进行自动数据备份,我们也可以通过SAVE
或者 BGSAVE
(后台备份)命令创建当前数据库的备份
save #该命令将在 redis 安装目录中创建dump.rdb文件。
CONFIG GET dir #返回:"/usr/local/redis/bin"
Redis的数据读写基于内存,Redis虽然快,但是内存成本还是比较高的,而且基于内存Redis不适合存储太大量的数据。Redis可以使用电脑物理最大内存,当然我们通常会通过设置maxmemory参数现在Redis内存的使用, 为了让有限的内存空间存储更多的有效数据,我们可以设置淘汰策略,让Redis自动淘汰那些老旧的,或者不怎么被使用的数据。
redis 确定驱逐某个键值对后,会删除这个数据并,并将这个数据变更消息发布到本地(AOF 持久化)和从机(主从连接)。
maxmemory <bytes
maxmemory-policy noeviction #noeviction 为默认的策略,根据情况修改
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/u014494148/article/details/108222697
内容来源于网络,如有侵权,请联系作者删除!