Redis 慢查询与弱事务
目录
慢查询
慢查询阈值及队列长度
redis.cli
127.0.0.1:6379> config get slowlog-log-slower-than 1) "slowlog-log-slower-than" 2) "10000" 127.0.0.1:6379> config get slowlog-max-len 1) "slowlog-max-len" 2) "128"
redis.windows.conf
# 慢查询 默认十秒 # The following time is expressed in microseconds, so 1000000 is equivalent # to one second. Note that a negative number disables the slow log, while # a value of zero forces the logging of every command. slowlog-log-slower-than 10000 # slowlog-log-slower-than =0记录所有命令 -1所有命令都不记录 # 队列记录数量 slowlog-max-len 128 # 此时当有第129条慢查询命令插入时,队列的第一条命令就会出列,第11条入列到慢查询队列中,先进先出
慢查询队列的长度
127.0.0.1:6379> slowlog len (integer) 0 127.0.0.1:6379>
获取队列中慢查询记录的命令
slowlog get
redis 弱事务
事务相关操作
# 事务开始 multi # 可发多条命令,但是命令不会立即被执行,而是被放到一个队列中 # 提交事务 exec # 此时会执行所有事务块内的命令。返回事务块内所有命令的返回值,按命令执行的先后顺序排列。 # 停止事务 discard # 客户端可以清空事务队列,并放弃执行事务, 并且客户端会从事务状态中退出 # WATCH # 使用watch后, multi失效,事务失效
- Redis事务特性
1.redis 不支持回滚“Redis 在事务失败时不进行回滚,而是继续执行余下的命令”, 所以 Redis 的内部可以保持简单且快速。
2.如果在一个事务中的命令出现错误,那么所有的命令都不会执行;
3.如果在一个事务中出现运行错误,那么正确的命令会被执行。
Lua 解决Redis的弱事务
- 优点1减少网络开销,2.原子性,3,复用性
# eval script numkeys key [key ...] arg [arg ...] # KEYS[1],ARGV[1]区分大小写,数字代表参数位置 eval "return {KEYS[1],KEYS[3],ARGV[1]}" 3 hello redis Redis !!
#当前正在运行的脚本会被杀死,执行这个脚本的客户端会从 EVAL script numkeys key [key …] arg [arg …] 命令的阻塞当中退出,并收到一个错误作为返回值。 #另一方面,假如当前正在运行的脚本已经执行过写操作,那么即使执行 SCRIPT KILL ,也无法将它杀死,因为这是违反 Lua 脚本的原子性执行原则的。 #在这种情况下,唯一可行的办法是使用 SHUTDOWN NOSAVE 命令,通过停止整个 Redis 进程来停止脚本的运行,并防止不完整(half-written)的信息被写入数据库中 script kill # 其他命令 script flush script exists ‘sha nm‘
相关推荐
王道革 2020-11-25
wangdonghello 2020-11-03
Langeldep 2020-11-16
chenhualong0 2020-11-16
聚合室 2020-11-16
koushr 2020-11-12
MRFENGG 2020-11-11
guoyanga 2020-11-10
fackyou00 2020-11-10
Orangesss 2020-11-03
dongCSDN 2020-10-31
rainandtear 2020-10-30
Quietboy 2020-10-30
liuyulong 2020-10-29
fansili 2020-10-29
温攀峰 2020-10-23
jackbon 2020-10-19
kaixinfelix 2020-10-04