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

Redis 事務

Redis 事務能夠一次執行多個命令, 而且帶有如下兩個重要的保證:html

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

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

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

實例

如下是一個事務的例子, 它先以 MULTI 開始一個事務, 而後將多個命令入隊到事務中, 最後由 EXEC 命令觸發事務, 一併執行事務中的全部命令:redis

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 環境。執行腳本的經常使用命令爲 EVALapi

語法

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 服務,並檢測服務是否在運行:tcp

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)的內部命令
相關文章
相關標籤/搜索