• Redis其他命令


    Redis 连接

    我们可以通过 redis 的配置文件设置密码参数,这样客户端连接到 redis 服务就需要密码验证,这样可以让你的 redis 服务更安全

    查看是否设置了密码(默认为空,没有密码的)

    CONFIG get requirepass

    设置密码

    CONFIG set requirepass "password"

    设置密码后,客户端连接 redis 服务就需要密码验证,否则无法执行命令。

    redis 连接的基本命令:

    SELECT index 切换到指定的数据库, 用于切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值

    AUTH password 验证密码是否正确

    PING 查看服务是否运行,如果服务器运作正常的话,会返回一个 PONG 。通常用于测试与服务器的连接是否仍然生效,或者用于测量延迟值

    ECHO message 打印字符串

    QUIT 关闭当前连接,关闭与当前客户端与redis服务的连接。一旦所有等待中的回复(如果有的话)顺利写入到客户端,连接就会被关闭

    Redis 事务

    Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:

    • 批量操作在发送 EXEC 命令前被放入队列缓存。

    • 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。

    • 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。

    一个事务从开始到执行会经历以下三个阶段:

    • 开始事务。

    • 命令入队。

    • 执行事务。

    单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。

    事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。

    redis 127.0.0.1:7000> multi
    OK
    redis 127.0.0.1:7000> set a aaa
    QUEUED
    redis 127.0.0.1:7000> set b bbb
    QUEUED
    redis 127.0.0.1:7000> set c ccc
    QUEUED
    redis 127.0.0.1:7000> exec
    1) OK
    2) OK
    3) OK

    redis 事务的相关命令:

    MULTI 标记一个事务块的开始。

    EXEC 执行所有事务块内的命令。 事务块内所有命令的返回值,按命令执行的先后顺序排列。 当操作被打断时,返回空值 nil

    DISCARD 取消事务,放弃执行事务块内的所有命令。

    WATCH key [key ...] 监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。

    UNWATCH 取消 WATCH 命令对所有 key 的监视。

    Redis 脚本

    Redis 脚本使用 Lua 解释器来执行脚本。 执行脚本的常用命令为 EVAL

    redis 脚本常用命令

    EVAL script numkeys key [key ...] arg [arg ...] 执行 Lua 脚本。

    EVAL script numkeys key [key ...] arg [arg ...] 
    参数说明:
    --script: 参数是一段 Lua 5.1 脚本程序。脚本不必(也不应该)定义为一个 Lua 函数。
    --numkeys: 用于指定键名参数的个数。
    --key [key ...]: 从 EVAL 的第三个参数开始算起,表示在脚本中所用到的那些 Redis 键(key),这些键名参数可以在 Lua 中通过全局变量 KEYS 数组,用 1 为基址的形式访问( KEYS[1] , KEYS[2] ,以此类推)。
    --arg [arg ...]: 附加参数,在 Lua 中通过全局变量 ARGV 数组访问,访问的形式和 KEYS 变量类似( ARGV[1] 、 ARGV[2] ,诸如此类)。

    EVALSHA sha1 numkeys key [key ...] arg [arg ...] 执行 Lua 脚本。Redis Evalsha 命令根据给定的 sha1 校验码,执行缓存在服务器中的脚本。将脚本缓存到服务器的操作可以通过 SCRIPT LOAD 命令进行。这个命令的其他地方,比如参数的传入方式,都和 EVAL 命令一样。

    EVALSHA sha1 numkeys key [key ...] arg [arg ...]
    参数说明:
    --sha1 : 通过 SCRIPT LOAD 生成的 sha1 校验码。
    --numkeys: 用于指定键名参数的个数。
    --key [key ...]: 从 EVAL 的第三个参数开始算起,表示在脚本中所用到的那些 Redis 键(key),这些键名参数可以在 Lua 中通过全局变量 KEYS 数组,用 1 为基址的形式访问( KEYS[1] , KEYS[2] ,以此类推)。
    --arg [arg ...]: 附加参数,在 Lua 中通过全局变量 ARGV 数组访问,访问的形式和 KEYS 变量类似( ARGV[1] 、 ARGV[2] ,诸如此类)。

    SCRIPT LOAD script 将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本。

    Redis Script Load 命令用于将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本。 EVAL 命令也会将脚本添加到脚本缓存中,但是它会立即对输入的脚本进行求值。 如果给定的脚本已经在缓存里面了,那么不执行任何操作。 在脚本被加入到缓存之后,通过 EVALSHA 命令,可以使用脚本的 SHA1 校验和来调用这个脚本。 脚本可以在缓存中保留无限长的时间,直到执行 SCRIPT FLUSH 为止。

    SCRIPT EXISTS script [script ...] 查看指定的脚本是否已经被保存在缓存当中。 SCRIPT FLUSH 从脚本缓存中移除所有脚本。 SCRIPT KILL 杀死当前正在运行的 Lua 脚本。

    Redis Script kill 命令用于杀死当前正在运行的 Lua 脚本,当且仅当这个脚本没有执行过任何写操作时,这个命令才生效。这个命令主要用于终止运行时间过长的脚本,比如一个因为 BUG 而发生无限循环的脚本。SCRIPT KILL 执行之后,当前正在运行的脚本会被杀死,执行这个脚本的客户端会从 EVAL 命令的阻塞当中退出,并收到一个错误作为返回值

  • 相关阅读:
    【BZOJ】1045: [HAOI2008]糖果传递(中位数)
    【BZOJ】1011: [HNOI2008]遥远的行星(近似)
    【BZOJ】1034: [ZJOI2008]泡泡堂BNB(贪心)
    【BZOJ】1029: [JSOI2007]建筑抢修(贪心)
    【BZOJ】1022: [SHOI2008]小约翰的游戏John(博弈论)
    【BZOJ】1010: [HNOI2008]玩具装箱toy(dp+斜率优化)
    noip2014滚粗记
    【NOIP模拟题】Permutation(dp+高精度)
    MySQL 关于自定义函数的操作
    MySQL 关于存储过程的操作
  • 原文地址:https://www.cnblogs.com/yjh1995/p/12872764.html
Copyright © 2020-2023  润新知