redis 五

Redis 事务
Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:
    批量操作在发送 EXEC 命令前被放入队列缓存。
    收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
    在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。
一个事务从开始到执行会经历以下三个阶段:
    开始事务。
    命令入队。
    执行事务。
实例
以下是一个事务的例子, 它先以 MULTI 开始一个事务, 然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务, 一并执行事务中的所有命令: 
    redis 127.0.0.1:6379> MULTI
    OK
    redis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days"
    QUEUED
    redis 127.0.0.1:6379> GET book-name
    QUEUED
    redis 127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series"
    QUEUED
    redis 127.0.0.1:6379> SMEMBERS tag
    QUEUED
    redis 127.0.0.1:6379> EXEC
    1) OK
    2) "Mastering C++ in 21 days"
    3) (integer) 3
    4) 1) "Mastering Series"
           2) "C++"
           3) "Programming"
单个 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
    如果在 set b bbb 处失败,set a 已成功不会回滚,set c 还会继续执行。
Redis 事务命令
    discard :取消事务,放弃执行事务块内的所有命令。
    exec :执行所有事务块内的命令。
    nulti :标记一个事务块的开始。
    unwatch :取消 WATCH 命令对所有 key 的监视。
    watch key [key...] :监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。
Redis 脚本
Redis 脚本使用 Lua 解释器来执行脚本。 Reids 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL。 
    eval script numkeys key [key ...] arg [arg ...] :执行 Lua 脚本。
    evalsha sha1 numkeys key [key ...] arg [arg ...] :执行 Lua 脚本。
    script exists script [script...] :查看指定的脚本是否已经被保存在缓存当中。
    script flush :从脚本缓存中移除所有脚本。
    script kill :杀死当前正在运行的 Lua 脚本。
    script load script:将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本。
Redis 连接
Redis 连接命令主要是用于连接 redis 服务。
以下实例演示了客户端如何通过密码验证连接到 redis 服务,并检测服务是否在运行: 
    redis 127.0.0.1:6379> AUTH "password"
    OK
    redis 127.0.0.1:6379> PING
    PONG
Redis 连接命令
    auth password :验证密码是否正确
    echo message :打印字符串
    ping :查看服务是否运行
    quit :关闭当前连接
    select index :切换到指定的数据库
Redis 服务器
Redis 服务器命令主要是用于管理 redis 服务。
实例
以下实例演示了如何获取 redis 服务器的统计信息:
    redis 127.0.0.1:6379> INFO
    # Server
    redis_version:2.8.13
    redis_git_sha1:00000000
    redis_git_dirty:0
    redis_build_id:c2238b38b1edb0e2
    redis_mode:standalone
    os:Linux 3.5.0-48-generic x86_64
    arch_bits:64
    multiplexing_api:epoll
    gcc_version:4.7.2
    process_id:3856
    run_id:0e61abd297771de3fe812a3c21027732ac9f41fe
    tcp_port:6379
    uptime_in_seconds:11554
    uptime_in_days:0
    hz:10
    lru_clock:16651447
    config_file:

    # Clients
    connected_clients:1
    client-longest_output_list:0
    client-biggest_input_buf:0
    blocked_clients:0

    # Memory
    used_memory:589016
    used_memory_human:575.21K
    used_memory_rss:2461696
    used_memory_peak:667312
    used_memory_peak_human:651.67K
    used_memory_lua:33792
    mem_fragmentation_ratio:4.18
    mem_allocator:jemalloc-3.6.0

    # Persistence
    loading:0
    rdb_changes_since_last_save:3
    rdb_bgsave_in_progress:0
    rdb_last_save_time:1409158561
    rdb_last_bgsave_status:ok
    rdb_last_bgsave_time_sec:0
    rdb_current_bgsave_time_sec:-1
    aof_enabled:0
    aof_rewrite_in_progress:0
    aof_rewrite_scheduled:0
    aof_last_rewrite_time_sec:-1
    aof_current_rewrite_time_sec:-1
    aof_last_bgrewrite_status:ok
    aof_last_write_status:ok

    # Stats
    total_connections_received:24
    total_commands_processed:294
    instantaneous_ops_per_sec:0
    rejected_connections:0
    sync_full:0
    sync_partial_ok:0
    sync_partial_err:0
    expired_keys:0
    evicted_keys:0
    keyspace_hits:41
    keyspace_misses:82
    pubsub_channels:0
    pubsub_patterns:0
    latest_fork_usec:264

    # Replication
    role:master
    connected_slaves:0
    master_repl_offset:0
    repl_backlog_active:0
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:0
    repl_backlog_histlen:0

    # CPU
    used_cpu_sys:10.49
    used_cpu_user:4.96
    used_cpu_sys_children:0.00
    used_cpu_user_children:0.01

    # Keyspace
    db0:keys=94,expires=1,avg_ttl=41638810
    db1:keys=1,expires=0,avg_ttl=0
    db3:keys=1,expires=0,avg_ttl=0
Redis 服务器命令
    bgrewriteaof :异步执行一个 AOF(AppendOnly File) 文件重写操作
    bgsave :在后台异步保存当前数据库的数据到磁盘
    client kill [ip:port] [id client-id] :关闭客户端连接
    client list :获取连接到服务器的客户端连接列表
    client getname :获取连接的名称
    client pause timeout :在指定时间内终止运行来自客户端的命令
    client setname connection-name :设置当前连接的名称
    cluster slots :获取集群节点的映射数组
    command :获取 Redis 命令详情数组
    command count :获取 Redis 命令总数
    command getkeys :获取给定命令的所有键
    time :返回当前服务器时间
    command info command-name [command-name] :获取指定 Redis 命令描述的数组
    config get parameter :获取指定配置参数的值
    config rewrite :对启动 Redis 服务器时所指定的 redis.conf 配置文件进行改写
    config set parameter value :修改 redis 配置参数,无需重启
    config resetstat :重置 INFO 命令中的某些统计数据
    dbsize :返回当前数据库的 key 的数量
    debug object key :获取 key 的调试信息
    debug segfault :让 Redis 服务崩溃
    flushall :删除所有数据库的所有key
    flushdb :删除当前数据库的所有key
    info [section] :获取 Redis 服务器的各种信息和统计数值
    lastsave :返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示
    monitor :实时打印出 Redis 服务器接收到的命令,调试用
    role :返回主从实例所属的角色
    save :同步保存数据到硬盘
    shutdown [nosave] [save] :异步保存数据到硬盘,并关闭服务器
    slaveof host port :将当前服务器转变为指定服务器的从属服务器(slave server)
    slowlog subcommand [argument] :管理 redis 的慢日志
    sync :用于复制功能(replication)的内部命令

 

posted @ 2018-05-29 21:49  liang哥哥  阅读(102)  评论(0)    收藏  举报