JAVA記錄-redis緩存機制介紹(三)


Redis 事務

Redis 事務可以一次執行多個命令, 並且帶有以下兩個重要的保證:

  • 事務是一個單獨的隔離操作:事務中的所有命令都會序列化、按順序地執行。事務在執行的過程中,不會被其他客戶端發送來的命令請求所打斷。
  • 事務是一個原子操作:事務中的命令要么全部被執行,要么全部都不執行。

一個事務從開始到執行會經歷以下三個階段:

  • 開始事務。
  • 命令入隊。
  • 執行事務。

實例

以下是一個事務的例子, 它先以 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 事務的相關命令:

 

序號 命令及描述
1 DISCARD 
取消事務,放棄執行事務塊內的所有命令。
2 EXEC 
執行所有事務塊內的命令。
3 MULTI 
標記一個事務塊的開始。
4 UNWATCH 
取消 WATCH 命令對所有 key 的監視。
5 WATCH key [key ...] 
監視一個(或多個) key ,如果在事務執行之前這個(或這些) key 被其他命令所改動,那么事務將被打斷。

Redis 腳本

Redis 腳本使用 Lua 解釋器來執行腳本。 Reids 2.6 版本通過內嵌支持 Lua 環境。執行腳本的常用命令為 EVAL

語法

Eval 命令的基本語法如下:

redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]

實例

以下實例演示了 redis 腳本工作過程:

redis 127.0.0.1:6379> EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second 1) "key1" 2) "key2" 3) "first" 4) "second"

Redis 腳本命令

下表列出了 redis 腳本常用命令:

 

序號 命令及描述
1 EVAL script numkeys key [key ...] arg [arg ...] 
執行 Lua 腳本。
2 EVALSHA sha1 numkeys key [key ...] arg [arg ...] 
執行 Lua 腳本。
3 SCRIPT EXISTS script [script ...] 
查看指定的腳本是否已經被保存在緩存當中。
4 SCRIPT FLUSH 
從腳本緩存中移除所有腳本。
5 SCRIPT KILL 
殺死當前正在運行的 Lua 腳本。
6 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 連接命令

下表列出了 redis 連接的基本命令:

 

序號 命令及描述
1 AUTH password 
驗證密碼是否正確
2 ECHO message 
打印字符串
3 PING 
查看服務是否運行
4 QUIT 
關閉當前連接
5 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 服務器命令

下表列出了 redis 服務器的相關命令:

序號 命令及描述
1 BGREWRITEAOF 
異步執行一個 AOF(AppendOnly File) 文件重寫操作
2 BGSAVE 
在后台異步保存當前數據庫的數據到磁盤
3 CLIENT KILL [ip:port] [ID client-id] 
關閉客戶端連接
4 CLIENT LIST 
獲取連接到服務器的客戶端連接列表
5 CLIENT GETNAME 
獲取連接的名稱
6 CLIENT PAUSE timeout 
在指定時間內終止運行來自客戶端的命令
7 CLIENT SETNAME connection-name 
設置當前連接的名稱
8 CLUSTER SLOTS 
獲取集群節點的映射數組
9 COMMAND 
獲取 Redis 命令詳情數組
10 COMMAND COUNT 
獲取 Redis 命令總數
11 COMMAND GETKEYS 
獲取給定命令的所有鍵
12 TIME 
返回當前服務器時間
13 COMMAND INFO command-name [command-name ...] 
獲取指定 Redis 命令描述的數組
14 CONFIG GET parameter 
獲取指定配置參數的值
15 CONFIG REWRITE 
對啟動 Redis 服務器時所指定的 redis.conf 配置文件進行改寫
16 CONFIG SET parameter value 
修改 redis 配置參數,無需重啟
17 CONFIG RESETSTAT 
重置 INFO 命令中的某些統計數據
18 DBSIZE 
返回當前數據庫的 key 的數量
19 DEBUG OBJECT key 
獲取 key 的調試信息
20 DEBUG SEGFAULT 
讓 Redis 服務崩潰
21 FLUSHALL 
刪除所有數據庫的所有key
22 FLUSHDB 
刪除當前數據庫的所有key
23 INFO [section] 
獲取 Redis 服務器的各種信息和統計數值
24 LASTSAVE 
返回最近一次 Redis 成功將數據保存到磁盤上的時間,以 UNIX 時間戳格式表示
25 MONITOR 
實時打印出 Redis 服務器接收到的命令,調試用
26 ROLE 
返回主從實例所屬的角色
27 SAVE 
異步保存數據到硬盤
28 SHUTDOWN [NOSAVE] [SAVE] 
異步保存數據到硬盤,並關閉服務器
29 SLAVEOF host port 
將當前服務器轉變為指定服務器的從屬服務器(slave server)
30 SLOWLOG subcommand [argument] 
管理 redis 的慢日志
31 SYNC 
用於復制功能(replication)的內部命令


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM