redis主從復制、哨兵服務、持久化、數據類型

Top

NSD DBA DAY10

  1. 案例1:配置主從復制
  2. 案例2:配置帶驗證的主從復制
  3. 案例3:哨兵服務
  4. 案例4:使用RDB文件恢復數據
  5. 案例5:AOF
  6. 案例6:字符類型
  7. 案例7:列表類型
  8. 案例8:散列類型
  9. 案例9:集合類型

1 案例1:配置主從復制

1.1 問題

  1. 配置一主一從結構
  2. 配置一主多從結構
  3. 配置主從從結構

1.2 方案

準備3臺新虛擬機,具體配置如表-1所示。

1.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:配置一主一從結構

1)配置host61為主服務器

?
  1. [root@host61 ~]# yum -y install redis
  2. [root@host61 ~]# vim /etc/redis.conf
  3. 69 bind 192.168.88.61 設置服務使用的Ip地址
  4. 92 port 6379 設置服務使用的端口號 使用默認端口即可
  5. :wq
  6. [root@host61 ~]# systemctl start redis
  7. [root@host61 ~]# redis-cli -h 192.168.88.61 -p 6379
  8. 192.168.88.61:6379> info replication 查看復制信息
  9. # Replication
  10. role:master 默認就是主服務器
  11. connected_slaves:0 沒有從服務器
  12. master_replid:0aebff37df915061ddf157cc33d8742f14e8773f
  13. master_replid2:0000000000000000000000000000000000000000
  14. master_repl_offset:0
  15. second_repl_offset:-1
  16. repl_backlog_active:0
  17. repl_backlog_size:1048576
  18. repl_backlog_first_byte_offset:0
  19. repl_backlog_histlen:0
  20. 192.168.88.61:6379>

2)配置host62為host61的從服務器

  1. [root@host62 ~]# yum -y install redis 安裝軟件
  2. [root@host62 ~]# vim /etc/redis.conf 修改配置文件
  3. 69 bind 192.162.88.62 設置服務的ip地址
  4. 92 port 6379 設置服務的端口號 默認即可
  5. :wq
  6. [root@host62 ~]# systemctl start redis 啟動服務
  7. [root@host62 ~]# redis-cli -h 192.162.88.62 -p 6379 連接服務
  8. 192.162.88.62.:6379> replicaof 192.162.88.61 6379 指定主服務器ip和端口
  9. OK
  10. 192.162.88.62.:6379> config rewrite 永久保存配置
  11. OK
  12. 192.162.88.62.:6379> exit 退出服務
  13. [root@host62 ~]# tail -1 /etc/redis.conf 查看文件末尾
  14. replicaof 192.162.88.61 6379
  15. [root@host62 ~]# redis-cli -h 192.162.88.62 -p 6379 連接服務
  16. 192.162.88.62.:6379> info replication 查看復制信息
  17. # Replication
  18. role:slave 角色
  19. master_host:192.162.88.61 主服務器ip地址
  20. master_port:6379 主服務器端口號
  21. master_link_status:up 與主服務器連接狀態 (up 正常 down 連接失敗)
  22. master_last_io_seconds_ago:8
  23. master_sync_in_progress:0
  24. slave_repl_offset:14
  25. slave_priority:100
  26. slave_read_only:1
  27. connected_slaves:0
  28. master_replid:476ae25abdb72c60a4ada0dcc73910a7455ecac1
  29. master_replid2:0000000000000000000000000000000000000000
  30. master_repl_offset:14
  31. second_repl_offset:-1
  32. repl_backlog_active:1
  33. repl_backlog_size:1048576
  34. repl_backlog_first_byte_offset:1
  35. repl_backlog_histlen:14
  36. 192.162.88.62.:6379>

3)在主服務器host61查看復制信息

  1. [root@host61 ~]# redis-cli -h 192.168.88.61 -p 6379
  2. 192.168.88.61:6379> info replication
  3. # Replication
  4. role:master 角色
  5. connected_slaves:1 一個從
  6. slave0:ip=192.168.88.62,port=6379,state=online,offset=322,lag=0 從服務器信息
  7. master_replid:476ae25abdb72c60a4ada0dcc73910a7455ecac1
  8. master_replid2:0000000000000000000000000000000000000000
  9. master_repl_offset:322
  10. second_repl_offset:-1
  11. repl_backlog_active:1
  12. repl_backlog_size:1048576
  13. repl_backlog_first_byte_offset:1
  14. repl_backlog_histlen:322
  15. 192.168.88.61:6379> mset x 1 y 2 z 3 存儲數據
  16. OK
  17. 192.168.88.61:6379> keys * 查看變量
  18. 1) "z"
  19. 2) "y"
  20. 3) "x"

4)在從服務器查看是否同步數據

  1. [root@host62 ~]# redis-cli -h 192.168.88.62 -p 6379
  2. 192.168.88.62.:6379> keys *
  3. 1) "y"
  4. 2) "x"
  5. 3) "z"
  6. 192.168.88.62.:6379>

步驟二:配置一主多從結構

要求:把host63也配置為host61的從服務器

1)配置host63為host61的從服務器

  1. [root@host63 ~]# yum -y install redis 安裝軟件
  2. [root@host63 ~]# vim /etc/redis.conf 修改配置文件
  3. 69 bind 192.168.88.63
  4. 92 port 6379
  5. :wq
  6. [root@host63 ~]# systemctl start redis 啟動服務
  7. [root@host63 ~]# redis-cli -h 192.168.88.63 -p 6379 連接服務
  8. 192.168.88.63:6379> replicaof 192.168.88.61 6379 指定主服務器ip和端口
  9. OK
  10. 192.168.88.63:6379> config rewrite 永久保存配置
  11. OK
  12. 192.168.88.63:6379> exit
  13. [root@host63 ~]# tail -1 /etc/redis.conf 保存到文件末尾
  14. replicaof 192.168.88.61 6379
  15. [root@host63 ~]# redis-cli -h 192.168.88.63 -p 6379 連接服務
  16. 192.168.88.63:6379> info replication 查看復制信息
  17. # Replication
  18. role:slave 角色
  19. master_host:192.168.88.61 主服務器IP
  20. master_port:6379 主服務器端口
  21. master_link_status:up 與主服務器連接狀態 up 正常連接狀態
  22. master_last_io_seconds_ago:9
  23. master_sync_in_progress:0
  24. slave_repl_offset:1171
  25. slave_priority:100
  26. slave_read_only:1
  27. connected_slaves:0
  28. master_replid:476ae25abdb72c60a4ada0dcc73910a7455ecac1
  29. master_replid2:0000000000000000000000000000000000000000
  30. master_repl_offset:1171
  31. second_repl_offset:-1
  32. repl_backlog_active:1
  33. repl_backlog_size:1048576
  34. repl_backlog_first_byte_offset:1158
  35. repl_backlog_histlen:14
  36. 192.168.88.63:6379> keys * 查看是否同步數據
  37. 1) "x"
  38. 2) "z"
  39. 3) "y"
  40. 192.168.88.63:6379>

在host61 查看到有2臺從服務器

  1. [root@host61 ~]# redis-cli -h 192.168.88.61 -p 6379
  2. 192.168.88.61:6379> info replication
  3. # Replication
  4. role:master
  5. connected_slaves:2
  6. slave0:ip=192.168.88.62,port=6379,state=online,offset=3027,lag=0
  7. slave1:ip=192.168.88.63,port=6379,state=online,offset=3013,lag=1
  8. master_replid:209b3b7ce20c708ab1b6b95a5d1becb2454b0941
  9. master_replid2:0000000000000000000000000000000000000000
  10. master_repl_offset:3027
  11. second_repl_offset:-1
  12. repl_backlog_active:1
  13. repl_backlog_size:1048576
  14. repl_backlog_first_byte_offset:1
  15. repl_backlog_histlen:3027
  16. 192.168.88.61:6379>

步驟三:配置主從從結構

要求: 把host63恢復為獨立的redis服務器,然后配置為host62的從服務器

1)配置host63

  1. [root@host63 ~]# redis-cli -h 192.168.88.63 -p 6379
  2. 192.168.88.63:6379> replicaof no one 恢復為獨立的數據庫服務器
  3. OK
  4. 192.168.88.63:6379> replicaof 192.168.88.62 6379 指定主服務器為62
  5. OK
  6. 192.168.88.63:6379> config rewrite 保存配置
  7. OK
  8. 192.168.88.63:6379> exit 斷開連接
  9. [root@host63 ~]# tail -1 /etc/redis.conf 查看是否保存
  10. replicaof 192.168.88.62 6379
  11. [root@host63 ~]# redis-cli -h 192.168.88.63 -p 6379 連接服務
  12. 192.168.88.63:6379> info replication 查看復制信息
  13. # Replication
  14. role:slave 角色
  15. master_host:192.168.88.62 主服務器IP
  16. master_port:6379 主服務端口
  17. master_link_status:up 與主服務器連接狀態
  18. master_last_io_seconds_ago:0
  19. master_sync_in_progress:0
  20. slave_repl_offset:4545
  21. slave_priority:100
  22. slave_read_only:1
  23. connected_slaves:0
  24. master_replid:476ae25abdb72c60a4ada0dcc73910a7455ecac1
  25. master_replid2:0000000000000000000000000000000000000000
  26. master_repl_offset:4545
  27. second_repl_offset:-1
  28. repl_backlog_active:1
  29. repl_backlog_size:1048576
  30. repl_backlog_first_byte_offset:4420
  31. repl_backlog_histlen:126
  32. 192.168.88.63:6379>

2)在host62查看復制信息

  1. [root@host62 ~]# redis-cli -h 192.168.88.62 -p 6379
  2. 192.168.88.62.:6379> info replication 查看復制信息
  3. # Replication
  4. role:slave 本身是從服務器
  5. master_host:192.168.88.61 主服務器ip
  6. master_port:6379 主服務器redis服務端口
  7. master_link_status:up 與主服務器連接狀態
  8. master_last_io_seconds_ago:4
  9. master_sync_in_progress:0
  10. slave_repl_offset:4769
  11. slave_priority:100
  12. slave_read_only:1
  13. connected_slaves:1 本身有一個從服務器
  14. slave0:ip=192.168.88.63,port=6379,state=online,offset=4769,lag=0 從服務器信息
  15. master_replid:476ae25abdb72c60a4ada0dcc73910a7455ecac1
  16. master_replid2:0000000000000000000000000000000000000000
  17. master_repl_offset:4769
  18. second_repl_offset:-1
  19. repl_backlog_active:1
  20. repl_backlog_size:1048576
  21. repl_backlog_first_byte_offset:1
  22. repl_backlog_histlen:4769
  23. 192.168.88.68.:6379>

2 案例2:配置帶驗證的主從復制

2.1 問題

1)基于案例1做如下配置:

  • 配置主機host61,redis服務連接密碼為123456
  • 主機host62設置連接host61的redis服務密碼

2.2 方案

給host61主機的Redis服務設置連接密碼,如果從服務器不指定連接密碼無法同步數據。

2.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:配置主機host61,redis服務連接密碼為123456

命令操作如下所示:

  1. [root@host61 ~]# redis-cli -h 192.168.88.61 -p 6379
  2. 192.168.88.61:6379> config get requirepass 查看密碼,默認服務沒有密碼
  3. 1) "requirepass"
  4. 2) ""
  5. 192.168.88.61:6379> config set requirepass 123456 設置密碼
  6. OK
  7. 192.168.88.61:6379> auth 123456 輸入密碼
  8. OK
  9. 192.168.88.61:6379> config rewrite 保存配置
  10. OK
  11. 192.168.88.61:6379> exit 退出
  12. [root@host61 ~]# tail -1 /etc/redis.conf 保存到文件的末尾
  13. requirepass "123456"
  14. [root@host61 ~]# redis-cli -h 192.168.88.61 -p 6379 連接服務
  15. 192.168.88.61:6379> auth 123456 輸入密碼
  16. OK
  17. 192.168.88.61:6379> info replication 查看復制信息
  18. # Replication
  19. role:master
  20. connected_slaves:0 沒有從服務器了 因為從沒有輸入連接密碼連接不上主服務器
  21. master_replid:476ae25abdb72c60a4ada0dcc73910a7455ecac1
  22. master_replid2:0000000000000000000000000000000000000000
  23. master_repl_offset:5763
  24. second_repl_offset:-1
  25. repl_backlog_active:1
  26. repl_backlog_size:1048576
  27. repl_backlog_first_byte_offset:1
  28. repl_backlog_histlen:5763
  29. 192.168.88.61:6379>

步驟二:主機host62設置連接host61的redis服務密碼

命令操作如下所示:

  1. [root@host62 ~]# redis-cli -h 192.168.88.62 -p 6379 連接服務
  2. 192.168.88.62.:6379> info replication 查看復制信息
  3. # Replication
  4. role:slave
  5. master_host:192.168.88.61
  6. master_port:6379
  7. master_link_status:down 沒設置密碼 與master主機是斷開狀態
  8. master_last_io_seconds_ago:-1
  9. master_sync_in_progress:0
  10. slave_repl_offset:1
  11. master_link_down_since_seconds:274
  12. slave_priority:100
  13. slave_read_only:1
  14. connected_slaves:0
  15. master_replid:476ae25abdb72c60a4ada0dcc73910a7455ecac1
  16. master_replid2:0000000000000000000000000000000000000000
  17. master_repl_offset:7803
  18. second_repl_offset:-1
  19. repl_backlog_active:0
  20. repl_backlog_size:1048576
  21. repl_backlog_first_byte_offset:1
  22. repl_backlog_histlen:7803
  23. 192.168.88.62:6379> config set masterauth 123456 指定主服務器密碼
  24. OK
  25. 192.168.88.62:6379> config rewrite 保存配置
  26. OK
  27. 192.168.88.62:6379> info replication 查看復制信息
  28. # Replication
  29. role:slave
  30. master_host:192.168.88.61
  31. master_port:6379
  32. master_link_status:up 設置連接密碼后 狀態為up
  33. master_last_io_seconds_ago:10
  34. master_sync_in_progress:0
  35. slave_repl_offset:5847
  36. slave_priority:100
  37. slave_read_only:1
  38. connected_slaves:1
  39. slave0:ip=192.168.88.63,port=6379,state=online,offset=5847,lag=1
  40. master_replid:476ae25abdb72c60a4ada0dcc73910a7455ecac1
  41. master_replid2:0000000000000000000000000000000000000000
  42. master_repl_offset:5847
  43. second_repl_offset:-1
  44. repl_backlog_active:1
  45. repl_backlog_size:1048576
  46. repl_backlog_first_byte_offset:5764
  47. repl_backlog_histlen:84
  48. 192.168.88.62.:6379>

3 案例3:哨兵服務

3.1 問題

  1. 配置主機Host67為master服務器
  2. 配置主機host68為Host67的slave服務器
  3. 配置主機host69運行哨兵服務
  4. 測試配置

3.2 方案

準備3臺新的虛擬機,具體配置如表-2所示。

說明:

?

1)可以使用一主一從或 一主多從 或 主從從 + 哨兵服務 做服務的高可用 和 數據自動備份

2)如果主從結構中的redis服務設置連接密碼的話必須全每臺數據庫都要設置密碼且密碼要一樣,要么全都不設置密碼。

3)如果Redis服務有密碼宕機的服務器啟動服務后,要人為指定主服務器的連接密碼。

3.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:配置主機Host67為master服務器

命令操作如下所示:

1)配置host67為主服務器

  1. [root@host67 ~]# yum -y install redis 安裝redis服務軟件
  2. [root@host67 ~]# vim /etc/redis.conf 修改配置文件
  3. 69 bind 192.168.88.67 設置redis服務使用IP地址
  4. 92 port 6379 設置redis服務使用端口
  5. :wq
  6. [root@host67 ~]# systemctl start redis 啟動服務
  7. [root@host67 ~]# redis-cli -h 192.168.88.67 -p 6379 連接服務
  8. 192.168.88.67:6379> info replication 查看角色
  9. # Replication
  10. role:master 默認是master角色
  11. connected_slaves:0 沒有從服務器
  12. master_replid:0aebff37df915061ddf157cc33d8742f14e8773f
  13. master_replid2:0000000000000000000000000000000000000000
  14. master_repl_offset:0
  15. second_repl_offset:-1
  16. repl_backlog_active:0
  17. repl_backlog_size:1048576
  18. repl_backlog_first_byte_offset:0
  19. repl_backlog_histlen:0
  20. 192.168.88.67:6379>

步驟二:配置主機host68為Host67的slave服務器

命令操作如下所示:

2)配置host68為host67的從服務器

  1. [root@host68 ~]# yum -y install redis 安裝軟件
  2. [root@host68 ~]# vim /etc/redis.conf 修改配置文件
  3. 69 bind 192.168.88.68 設置服務使用Ip地址
  4. 92 port 6379 設置服務監聽端口 默認即可
  5. :wq
  6. [root@host68 ~]# systemctl start redis 啟動服務
  7. [root@host68 ~]# redis-cli -h 192.168.88.68 -p 6379 連接服務
  8. 192.168.88.68:6379> replicaof 192.168.88.67 6379 指定主服務器ip和端口
  9. OK
  10. 192.168.88.68:6379> config rewrite 永久保存配置
  11. OK
  12. 192.168.88.68:6379> exit 斷開
  13. [root@host68 ~]# tail -1 /etc/redis.conf 保存到文件末尾
  14. replicaof 192.168.88.67 6379
  15. [root@host68 ~]# redis-cli -h 192.168.88.68 -p 6379 連接服務
  16. 192.168.88.68:6379> info replication 查看復制信息
  17. # Replication
  18. role:slave 角色 從服務器
  19. master_host:192.168.88.67 主服務器Ip
  20. master_port:6379 主服務端口
  21. master_link_status:up 與主連接狀態
  22. master_last_io_seconds_ago:8
  23. master_sync_in_progress:0
  24. slave_repl_offset:14
  25. slave_priority:100
  26. slave_read_only:1
  27. connected_slaves:0
  28. master_replid:476ae25abdb72c60a4ada0dcc73910a7455ecac1
  29. master_replid2:0000000000000000000000000000000000000000
  30. master_repl_offset:14
  31. second_repl_offset:-1
  32. repl_backlog_active:1
  33. repl_backlog_size:1048576
  34. repl_backlog_first_byte_offset:1
  35. repl_backlog_histlen:14
  36. 192.168.88.68:6379>

步驟三:配置主機host69運行哨兵服務

命令操作如下所示:

  1. ]# yum -y install redis 安裝軟件
  2. ]# vim /etc/redis-sentinel.conf 創建并編輯主配置文件
  3. 15 bind 192.168.88.69 指定哨兵服務使用ip地址
  4. 21 port 26379 指定哨兵服務監聽端口
  5. 26 daemonize yes 以守護進程方式運行服務
  6. 84 sentinel monitor mymaster 192.168.88.67 6379 1 監視master服務器Host67
  7. :wq
  8. [root@host69 ~]# systemctl start redis-sentinel 啟動哨兵服務
  9. [root@host69 ~]# netstat -utnlp | grep 26379 查看端口號
  10. tcp 0 0 192.168.88.69:26379 0.0.0.0:* LISTEN 1651/redis-sentinel
  11. [root@host69 ~]#

查看日志獲取監視信息

  1. [root@host69 ~]# tail -f /var/log/redis/sentinel.log
  2. 1651:X 03 Jun 2023 21:42:49.523 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
  3. 1651:X 03 Jun 2023 21:42:49.523 # Redis version=5.0.3, bits=64, commit=00000000, modified=0, pid=1651, just started
  4. 1651:X 03 Jun 2023 21:42:49.523 # Configuration loaded
  5. 1651:X 03 Jun 2023 21:42:49.523 * supervised by systemd, will signal readiness
  6. 1651:X 03 Jun 2023 21:42:49.525 * Running mode=sentinel, port=26379.
  7. 1651:X 03 Jun 2023 21:42:49.525 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
  8. 1651:X 03 Jun 2023 21:42:49.530 # Sentinel ID is f9475074a53444ee81765646c105e04e73ac9ec8
  9. 1651:X 03 Jun 2023 21:42:49.530 # +monitor master mymaster 192.168.88.67 6379 quorum 1
  10. 1651:X 03 Jun 2023 21:42:49.533 * +slave slave 192.168.88.68:6379 192.168.88.68 6379 @ mymaster 192.168.88.67 6379

步驟四:測試配置

思路:停止master主機的redis 服務,原slave角色會升級為主,哨兵服務會自動監視新的master服務,宕機的master 主機恢復后自動配置為當前主的從服務器。

停止master主機的redis 服務

  1. [root@host67 ~]# systemctl stop redis

原slave角色會升級為主

  1. [root@host68 ~]# redis-cli -h 192.168.88.68 -p 6379
  2. 192.168.88.68:6379> info replication
  3. # Replication
  4. role:master 角色
  5. connected_slaves:0 沒從服務器
  6. master_replid:e4d9399cdf19c724b032859e77316019735d391e
  7. master_replid2:bd1b8d193de170bedd8b40780ee3fb45f9590a5b
  8. master_repl_offset:35343
  9. second_repl_offset:32642
  10. repl_backlog_active:1
  11. repl_backlog_size:1048576
  12. repl_backlog_first_byte_offset:183
  13. repl_backlog_histlen:35161
  14. 192.168.88.68:6379>

哨兵服務會自動監視新的master服務

  1. [root@host69 ~]# tail -f /var/log/redis/sentinel.log 查看日志文件
  2. 1651:X 03 Jun 2023 21:50:23.603 # +failover-state-select-slave master mymaster 192.168.88.67 6379
  3. 1651:X 03 Jun 2023 21:50:23.694 # +selected-slave slave 192.168.88.68:6379 192.168.88.68 6379 @ mymaster 192.168.88.67 6379
  4. 1651:X 03 Jun 2023 21:50:23.695 * +failover-state-send-slaveof-noone slave 192.168.88.68:6379 192.168.88.68 6379 @ mymaster 192.168.88.67 6379
  5. 1651:X 03 Jun 2023 21:50:23.796 * +failover-state-wait-promotion slave 192.168.88.68:6379 192.168.88.68 6379 @ mymaster 192.168.88.67 6379
  6. 1651:X 03 Jun 2023 21:50:24.452 # +promoted-slave slave 192.168.88.68:6379 192.168.88.68 6379 @ mymaster 192.168.88.67 6379
  7. 1651:X 03 Jun 2023 21:50:24.452 # +failover-state-reconf-slaves master mymaster 192.168.88.67 6379
  8. 1651:X 03 Jun 2023 21:50:24.502 # +failover-end master mymaster 192.168.88.67 6379
  9. 1651:X 03 Jun 2023 21:50:24.502 # +switch-master mymaster 192.168.88.67 6379 192.168.88.68 6379
  10. 1651:X 03 Jun 2023 21:50:24.502 * +slave slave 192.168.88.67:6379 192.168.88.67 6379 @ mymaster 192.168.88.68 6379
  11. 1651:X 03 Jun 2023 21:50:54.586 # +sdown slave 192.168.88.67:6379 192.168.88.67 6379 @ mymaster 192.168.88.68 6379

宕機的master 主機恢復后自動配置為當前主的從服務器。

  1. [root@host67 ~]# systemctl start redis 啟動服務
  2. [root@host67 ~]# redis-cli -h 192.168.88.67 -p 6379 連接服務
  3. 192.168.88.67:6379> info replication????查看角色
  4. # Replication
  5. role:slave 從服務器
  6. master_host:192.168.88.68 主服務器ip
  7. master_port:6379 主服務器端口
  8. master_link_status:up 連通狀態
  9. master_last_io_seconds_ago:1
  10. master_sync_in_progress:0
  11. slave_repl_offset:54542
  12. slave_priority:100
  13. slave_read_only:1
  14. connected_slaves:0
  15. master_replid:e4d9399cdf19c724b032859e77316019735d391e
  16. master_replid2:0000000000000000000000000000000000000000
  17. master_repl_offset:54542
  18. second_repl_offset:-1
  19. repl_backlog_active:1
  20. repl_backlog_size:1048576
  21. repl_backlog_first_byte_offset:54379
  22. repl_backlog_histlen:164
  23. 192.168.88.67:6379>

4 案例4:使用RDB文件恢復數據

4.1 問題

  1. 設置存盤間隔為120秒且10個key改變數據自動存盤
  2. 使用RDB文件恢復數據

4.2 方案

創建1臺虛擬機,運行redis服務完成持久化練習,具體配置如表-3所示。

?

4.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:設置存盤間隔為120秒且10個key改變數據自動存盤

查看 redis服務存儲數據到硬盤的存盤頻率

 
  1. [root@redis70 ~]# vim /etc/redis.conf????
  2. save 秒 變量個數
  3. save 900 1
  4. save 300 10
  5. save 60 10000

驗證配置文件里定義的存儲頻率

 
  1. [root@redis70 ~]#systemctl stop redis????
  2. [root@redis70 ~]# rm -rf /var/lib/redis/*????
  3. [root@redis70 ~]# vim +219 /etc/redis.conf????
  4. save 900 1
  5. #save 300 10
  6. save 120 10 # 2分鐘內且有>=10個變量改變 就把內存里的數據復制到dump.rdb文件里
  7. save 60 10000
  8. :wq
  9. [root@redis70 ~]# systemctl start redis
  10. Starting Redis server...
  11. [root@redis70 ~]# ls /var/lib/redis/dump.rdb
  12. ls: 無法訪問/var/lib/redis/6379/dump.rdb: 沒有那個文件或目錄
  13. [root@redis70 ~]#

在服務啟動后,要在2分鐘內存儲大于等10個變量

 
  1. [root@redis70 ~]# redis-cli -h 192.168.88.70 -p 6379
  2. 192.168.88.70:6379> mset a 1 b 2 c 3 d 4
  3. OK
  4. 192.168.88.70:6379> mset x 1 y 2 z 3 k 6 i 7 z 9 f 22 zz 99 cc 66
  5. 192.168.88.70:6379> exit
  6. [root@redis70 ~]# ls /var/lib/redis/
  7. dump.rdb
  8. [root@redis70 ~]# ls /var/lib/redis/ -l 顯示文件創建的時間
  9. 總用量 4
  10. -rw-r--r-- 1 root root 159 10月 26 16:30 dump.rdb
  11. [root@redis70 ~]#

步驟二:使用RDB文件恢復數據

 
  1. 第1步:拷貝 dump.rdb 文件就是對數據的備份
  2. [root@redis70 ~]# cp /var/lib/redis/dump.rdb /opt/
  3. [root@redis70 ~]# ls /opt/*.rdb
  4. /opt/dump.rdb
  5. [root@redis70 ~]#
  6. 第2步:把備份的 dump.rdb 文件 再次拷貝回數據庫目錄就是恢復
  7. ???????????? #誤刪除數據
  8. 192.168.88.70:6379> FLUSHALL
  9. OK
  10. 192.168.88.70:6379> keys *
  11. (empty list or set)
  12. 192.168.88.70:6379>

使用備份的dump.rdb文件恢復

第1步 停止內存沒有數據的redis服務

第2步 把沒有數據的dump.rdb文件刪除

第3步 把備份dump.rdb文件拷貝到數據庫目錄下

第4步 啟動redis服務 并連接服務查看數據

 
  1. [root@redis70 ~]# systemctl stop redis
  2. [root@redis70 ~]# rm -rf /var/lib/redis/dump.rdb
  3. [root@redis70 ~]# cp /opt/dump.rdb /var/lib/redis/
  4. [root@redis70 ~]# systemctl start redis
  5. Starting Redis server...
  6. [root@redis70 ~]# redis-cli -h 192.168.88.70 -p 6379
  7. 192.168.88.70:6379> keys *
  8. 1) "i"
  9. 2) "d"
  10. 3) "x"
  11. ……
  12. ……

5 案例5:AOF

5.1 問題

  1. 啟用AOF
  2. 使用AOF文件恢復數據

5.2 步驟

實現此案例需要按照如下步驟進行。

步驟一:啟用AOF

命令操作如下所示:

 
  1. [root@redis70 ~]# redis-cli -h 192.168.88.70 -p 6379
  2. 192.168.88.70:6379> config set appendonly yes 啟用aof文件
  3. OK
  4. 192.168.88.70:6379> config get appendonly 查看是否啟用
  5. 1) "appendonly"
  6. 2) "yes"
  7. 192.168.88.70:6379>
  8. 192.168.88.70:6379> config rewrite 保存配置
  9. OK
  10. 192.168.88.70:6379> exit 斷開連接
  11. 數據庫目錄多了.aof文件
  12. [root@redis70 ~]# ls /var/lib/redis/
  13. appendonly.aof dump.rdb
  14. [root@redis70 ~]#wc –l /var/lib/redis/appendonly.aof 查看文件行數
  15. [root@redis70 ~]# redis-cli -h 192.168.88.70 -p 6379
  16. 192.168.88.70:6379> set x 1 存儲變量x
  17. OK
  18. 192.168.88.70:6379> set y 2 存儲變量y
  19. OK
  20. 192.168.88.70:6379> set z 3 存儲變量z
  21. OK
  22. 192.168.88.70:6379>keys * 查看變量
  23. 1) "x"
  24. 2) "z"
  25. 3) "y"
  26. 192.168.88.70:6379> exit 斷開連接
  27. [root@redis70 ~]#wc –l /var/lib/redis/ appendonly.aof 查看文件行數

步驟二:使用AOF文件恢復數據

1)備份aof文件

 
  1. [root@redis70 ~]# cp /var/lib/redis/appendonly.aof /opt/
  2. [root@redis70 ~]# ls /opt/*.aof
  3. /opt/appendonly.aof
  4. [root@redis70 ~]#

2)使用備份的aof文件恢復數據

 
  1. ???????????????? #刪除數據
  2. [root@redis70 ~]# redis-cli -h 192.168.88.70 -p 6379
  3. 192.168.88.70:6379> flushall
  4. 192.168.88.70:6379> exit

3)恢復數據

 
  1. 第1步: 把沒有數據的服務停止
  2. [root@redis70 ~]# systemctl stop redis
  3. 第2步: 刪除沒有數據的aof文件和rdb文件
  4. [root@redis70 ~]# rm -rf /var/lib/redis/*
  5. 第3步:把備份的aof文件拷貝到數據庫目錄
  6. [root@redis70 ~]# cp /opt/appendonly.aof /var/lib/redis/
  7. ????????????????????
  8. 第4步:啟動redis服務并查看數據
  9. [root@redis70 ~]# systemctl start redis
  10. [root@redis70 ~]# redis-cli -h 192.168.88.70 -p 6379
  11. 192.168.88.70:6379> keys *
  12. 1) "v4"
  13. 2) "v3"
  14. 。。。。。。
  15. 。。。。。。

6 案例6:字符類型

6.1 問題

練習命令的使用,具體命令如下:

  • set getrange strlen append
  • decr decrby incr incrby incrbyfloat

6.2 方案

在redis70主機做字符類型命令的練習。

6.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:命令操作如下所示:

存儲變量時 設置變量的有效期 px(毫秒) ex (秒)

 
  1. 192.168.88.70:6379> set name plj ex 10 //變量10秒過期
  2. OK
  3. 192.168.88.70:6379>
  4. 192.168.88.70:6379> type name //查看類型
  5. string
  6. 192.168.88.70:6379>
  7. 192.168.88.70:6379> set class nsd px 10 //變量10毫秒過期
  8. OK
  9. 192.168.88.70:6379>
  10. NX 不覆蓋賦值
  11. 192.168.88.70:6379> set name plj NX
  12. OK
  13. 192.168.88.70:6379> get name
  14. "plj"
  15. XX 覆蓋賦值
  16. 192.168.88.70:6379> set name yaya XX
  17. OK
  18. 192.168.88.70:6379> get name
  19. "yaya"
  20. 192.168.88.70:6379>

set 命令完整格式演示

 
  1. 192.168.88.70:6379> set gender girl ex 20 NX
  2. OK
  3. 192.168.88.70:6379>

- 遞增數字:字符串類型可以存儲任何形式的字符串,當存儲的字符串是整數形式時,

Redis 提供了一個實用的命令 INCR,其作用是讓當前鍵值遞增,并返回遞增后的值。

# 當要操作的鍵不存在時會默認鍵值為0,所以第一次遞增后的結果是1。

 
  1. 192.168.88.70:6379> set num 1 //創建變量
  2. 192.168.88.70:6379> INCR num //+1
  3. (integer) 2
  4. 192.168.88.70:6379> INCR num //+1
  5. (integer) 3
  6. 192.168.88.70:6379> GET num
  7. "3"

- 增加指定的整數

 
  1. 192.168.88.70:6379> INCRBY num 2 //+2
  2. (integer) 5
  3. 192.168.88.70:6379> INCRBY num 3 //+3
  4. (integer) 8
  5. - 遞減數字
  6. 192.168.88.70:6379> DECR num //-1
  7. (integer) 7
  8. 192.168.88.70:6379> DECRBY num 3 //
  9. (integer) 4

- 向尾部追加值

 
  1. 192.168.88.70:6379> SET hi Hello //創建變量hi
  2. OK
  3. 192.168.88.70:6379> APPEND hi " World" # 因為字符串包含空格,需要使用引號
  4. (integer) 11 # 返回值為hi的總長度
  5. 192.168.88.70:6379> GET hi
  6. "Hello World"

- 獲取字符串長度

 
  1. 192.168.88.70:6379> STRLEN hi
  2. (integer) 11
  3. - 中文字符返回字節數
  4. 192.168.88.70:6379> SET name 張三
  5. OK
  6. 192.168.88.70:6379> STRLEN name
  7. (integer) 6 # UTF-8編碼的中文,由于“張”和“三”兩個字的UTF-8編碼的長度都是3,所以此例中會返回6。

獲取變量部分數據

 
  1. 192.168.88.70:6379> set zfc ABCEF //創建變量
  2. OK
  3. 192.168.88.70:6379> GET zfc //輸出變量值
  4. "ABCEF"
  5. 192.168.88.70:6379> GETRANGE zfc 0 1 //輸出第1個到第2個字符
  6. "AB"
  7. 192.168.88.70:6379> GETRANGE zfc 2 4 //輸出第3個到第5個字符
  8. "CEF"
  9. 192.168.88.70:6379> GETRANGE zfc -2 -1 //輸出倒數第2個到第1個字符
  10. "EF"
  11. 192.168.88.70:6379>

7 案例7:列表類型

7.1 問題

練習命令使用,具體如下:

  • lpush llen lrange lpop
  • lindex lset rpush rpop linsert

7.2 方案

在redis70主機做練習。

7.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:命令操作如下所示:

LPUSH命令用來向列表左邊增加元素,返回值表示增加元素后列表的長度

 
  1. //創建變量
  2. 192.168.88.70:6379> lpush letter A B C
  3. (integer) 3
  4. 192.168.88.70:6379> type letter 查看類型
  5. list
  6. 192.168.88.70:6379>
  7. //頭部追加元素
  8. 192.168.88.70:6379> lpush letter d e
  9. (integer) 5

取出列表所有元素

 
  1. # 起始下標為0,結束下標為-1
  2. 192.168.88.70:6379> lrange letter 0 -1
  3. 1) "e"
  4. 2) "d"
  5. 3) "C"
  6. 4) "B"
  7. 5) "A"

統計元素個數

 
  1. 192.168.88.70:6379> llen letter
  2. (integer) 5

通過下標輸出單個元素 第1個元素下標用0表示 第2個元素下標用1表示

最后一個元素下標用-1表示

 
  1. 192.168.88.70:6379> lindex letter 0
  2. "e"
  3. 192.168.88.70:6379> lindex letter 2
  4. "C"
  5. 192.168.88.70:6379>
  6. 192.168.88.70:6379> lindex letter -1 //最后1個
  7. "A"
  8. 192.168.88.70:6379> lindex letter -2 //倒數第2個
  9. "B"
  10. 192.168.88.70:6379>

lset修改元素

 
  1. 192.168.88.70:6379> lrange letter 0 -1 修改前查看
  2. 1) "e"
  3. 2) "d"
  4. 3) "C"
  5. 4) "B"
  6. 5) "A"
  7. 192.168.88.70:6379> lset letter 0 E 修改第1元素
  8. OK
  9. 192.168.88.70:6379> lset letter -1 a 修改最后1個元素
  10. OK
  11. 192.168.88.70:6379> lrange letter 0 -1 修改后查看
  12. 1) "E"
  13. 2) "d"
  14. 3) "C"
  15. 4) "B"
  16. 5) "a"
  17. 192.168.88.70:6379>

彈出元素(刪除元素)

 
  1. 192.168.88.70:6379> lrange letter 0 -1 修改前查看
  2. 1) "E"
  3. 2) "d"
  4. 3) "C"
  5. 4) "B"
  6. 5) "a"
  7. 192.168.88.70:6379> lpop letter 彈出頭部元素
  8. "E"
  9. 192.168.88.70:6379> rpop letter 彈出尾部元素
  10. "a"
  11. 192.168.88.70:6379> lrange letter 0 -1 修改后查看
  12. 1) "d"
  13. 2) "C"
  14. 3) "B"
  15. 192.168.88.70:6379>

尾部追加元素

 
  1. 192.168.88.70:6379> rpush letter e f 尾部追加元素
  2. (integer) 5
  3. 192.168.88.70:6379> lrange letter 0 -1 追加后查看
  4. 1) "d"
  5. 2) "C"
  6. 3) "B"
  7. 4) "e"
  8. 5) "f"
  9. 192.168.88.70:6379>

插入元素

 
  1. 192.168.88.70:6379> lrange letter 0 -1 插入前查看
  2. 1) "d"
  3. 2) "C"
  4. 3) "B"
  5. 4) "e"
  6. 5) "f"
  7. 192.168.88.70:6379>
  8. 192.168.88.70:6379> linsert letter before C C2 值C前插入C2
  9. (integer) 6
  10. 192.168.88.70:6379> lrange letter 0 -1 插入后查看
  11. 1) "d"
  12. 2) "C2"
  13. 3) "C"
  14. 4) "B"
  15. 5) "e"
  16. 6) "f"
  17. 192.168.88.70:6379>
  18. 192.168.88.70:6379> linsert letter after C C3 值C后插入C3
  19. (integer) 7
  20. 192.168.88.70:6379> lrange letter 0 -1 插入后查看
  21. 1) "d"
  22. 2) "C2"
  23. 3) "C"
  24. 4) "C3"
  25. 5) "B"
  26. 6) "e"
  27. 7) "f"
  28. 192.168.88.70:6379>

8 案例8:散列類型

8.1 問題

練習命令使用,具體如下:

  • hset hmset hgetall hkeys hvals
  • hget hmget hdel

8.2 方案

在redis70主機做練習。

8.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:命令操作如下所示:

賦值與取值

 
  1. 192.168.88.70:6379> HSET user1 name bob 創建變量
  2. (integer) 1
  3. 192.168.88.70:6379> type user1 查看類型
  4. hash
  5. 192.168.88.70:6379>
  6. 192.168.88.70:6379> HSET user1 gender man 賦新值
  7. (integer) 1
  8. 192.168.88.70:6379> HGET user1 name 查看name列的值
  9. "bob"

設置多個字段

 
  1. 192.168.88.70:6379> HMSET user1 email bob@tedu.cn phone 13412345678
  2. OK
  3. 192.168.88.70:6379> HMGET user1 email phone
  4. 1) "bob@tedu.cn"
  5. 2) "13412345678"

獲取所有列名及對應的值

 
  1. 192.168.88.70:6379> HGETALL user1
  2. 1) "name"
  3. 2) "bob"
  4. 3) "gender"
  5. 4) "male"
  6. 5) "email"
  7. 6) "bob@tedu.cn"
  8. 7) "phone"
  9. 8) "13412345678"

刪除列

 
  1. 192.168.88.70:6379> HDEL user1 age
  2. (integer) 1

只獲取列名

 
  1. 192.168.88.70:6379> HKEYS user1
  2. 1) "name"
  3. 2) "gender"
  4. 3) "email"
  5. 4) "phone"
  6. 5) "address"

只獲取值

 
  1. 192.168.88.70:6379> HVALS user1
  2. 1) "bob"
  3. 2) "male"
  4. 3) "bob@tedu.cn"
  5. 4) "13412345678"
  6. 5) "beijing"

獲得列數量

 
  1. 192.168.88.70:6379> HLEN user1
  2. (integer) 5

9 案例9:集合類型

9.1 問題

練習命令使用,具體如下:

  • 練習無序集合類型命令
  • 練習有序集合類型命令

9.2 方案

在redis70主機做練習。

9.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:練習無序集合類型命令

無序集合中的每個元素都是不同的,且沒有順序

創建/追加/刪除/查看

 
  1. 192.168.88.70:6379> sadd mylike film muisc game 創建
  2. (integer) 3
  3. 192.168.88.70:6379> type mylike 查看數據類型
  4. set
  5. 192.168.88.70:6379> sadd mylike sleep game it 追加,自動刪除重復的值
  6. (integer) 2
  7. 192.168.88.70:6379> srem mylike sleep game 刪除成員
  8. (integer) 2
  9. 192.168.88.70:6379> SMEMBERS mylike 查看成員
  10. 1) "film"
  11. 2) "it"
  12. 3) "muisc"
  13. 192.168.88.70:6379>

判斷元素是否在集合中

 
  1. 192.168.88.70:6379> SISMEMBER mylike game 輸出0表示不存在
  2. (integer) 0
  3. 192.168.88.70:6379> SISMEMBER mylike music 輸出1表示存在
  4. (integer) 1
  5. 192.168.88.70:6379>

輸出成員個數

 
  1. 192.168.88.70:6379> SCARD mylike
  2. (integer) 3
  3. 192.168.88.70:6379>

集合運算

 
  1. 192.168.88.70:6379> SMEMBERS mylike
  2. 1) "film"
  3. 2) "it"
  4. 3) "muisc"
  5. 192.168.88.70:6379> sadd helike film music game sleep
  6. (integer) 4
  7. 192.168.88.70:6379>
  8. 合集 重復的只顯示一次
  9. 192.168.88.70:6379> SUNION mylike helike
  10. 1) "game"
  11. 2) "it"
  12. 3) "muisc"
  13. 4) "film"
  14. 5) "sleep"
  15. 6) "music"
  16. 192.168.88.70:6379>
  17. 交集
  18. 192.168.88.70:6379> SINTER mylike helike
  19. 1) "film"
  20. 192.168.88.70:6379>
  21. 差集: 用第1列的變量和第2列的變量比
  22. 192.168.88.70:6379> SDIFF mylike helike
  23. 1) "it"
  24. 2) "muisc"
  25. 192.168.88.70:6379> SDIFF helike mylike
  26. 1) "game"
  27. 2) "sleep"
  28. 3) "music"
  29. 192.168.88.70:6379>

隨機獲得集合中的元素

 
  1. # 在集合helike中隨機取出兩個不同元素。
  2. 192.168.88.70:6379> SRANDMEMBER helike 2
  3. 1) "sleep"
  4. 2) "music"
  5. 192.168.88.70:6379> SRANDMEMBER helike 2
  6. 1) "game"
  7. 2) "music"
  8. 192.168.88.70:6379>
  9. # 在集合helike中隨機取出兩個有可能相同元素。
  10. 192.168.88.70:6379> SRANDMEMBER helike -2
  11. 1) "film"
  12. 2) "music"
  13. 192.168.88.70:6379> SRANDMEMBER helike -2
  14. 1) "music"
  15. 2) "music"
  16. 192.168.88.70:6379>

集合中隨機彈出一個元素

 
  1. 192.168.88.70:6379> spop helike 第1次彈出
  2. "music"
  3. 192.168.88.70:6379> spop helike 第2次彈出
  4. "game"
  5. 192.168.88.70:6379> SMEMBERS helike 查看
  6. 1) "film"
  7. 2) "sleep"
  8. 192.168.88.70:6379>

步驟二:練習有序集合類型命令

ZADD命令的返回值是新加入到集合中的元素個數

 
  1. 192.168.88.70:6379> ZADD scores 88 tom 90 jerry 75 bob 92 alice 創建變量
  2. (integer) 4
  3. 192.168.88.70:6379> type scores 查看類型
  4. zset
  5. 192.168.88.70:6379> ZCARD scores 統計成員個數
  6. (integer) 4
  7. 192.168.88.70:6379> ZRANGE scores 0 -1 輸出成員名稱
  8. 1) "bob"
  9. 2) "tom"
  10. 3) "jerry"
  11. 4) "alice"
  12. 192.168.88.70:6379> ZRANGE scores 0 -1 withscores 輸出成員名稱及對應的值
  13. 1) "bob"
  14. 2) "75"
  15. 3) "tom"
  16. 4) "88"
  17. 5) "jerry"
  18. 6) "90"
  19. 7) "alice"
  20. 8) "92"
  21. 192.168.88.70:6379>

獲得某個成員的值

 
  1. 192.168.88.70:6379> ZSCORE scores tom
  2. "88"

- 獲得指定分數范圍的元素

 
  1. 192.168.88.70:6379> ZRANGEBYSCORE scores 80 90 WITHSCORES
  2. 1) "jerry"
  3. 2) "85"
  4. 3) "tom"
  5. 4) "88"

- 增加某個元素的分數

 
  1. 192.168.88.70:6379> ZINCRBY scores 3 bob
  2. "78"
  3. 192.168.88.70:6379> ZSCORE scores bob
  4. "78"

- 獲得指定分數范圍內的元素個數

 
  1. 192.168.88.70:6379> ZCOUNT scores 80 90
  2. (integer) 2

- 刪除元素

 
  1. 192.168.88.70:6379> ZREM scores bob
  2. (integer) 1

- 獲得元素的排名

 
  1. 192.168.88.70:6379> ZRANK scores tom # 獲取tom的排名
  2. (integer) 1 # 升序排列,從0開始計數
  3. 192.168.88.70:6379> ZREVRANK scores alice # 獲取alice的排名
  4. (integer) 0 # 降序排列,從0開始計數

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/38952.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/38952.shtml
英文地址,請注明出處:http://en.pswp.cn/news/38952.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux交叉編譯opencv并移植ARM端

Linux交叉編譯opencv并移植ARM端 - 知乎 一、安裝交叉編譯器 目標平臺為arm7l,此為32位ARM架構,要安裝合適的編譯器 sudo apt install arm-linux-gnueabihf-gcc sudo apt install arm-linux-gnueabihf-g注意:64位ARM架構的編譯器與32位ARM架…

【MyBatis】查詢數據庫

目錄 一、什么是MyBatis 二、MyBatis框架的搭建 1、搭建MyBatis框架 2、設置MyBaits項目的配置 三、使用MyBatis完成數據庫的操作 1、MyBatis程序中sql語句的即時執行和預編譯 1.1、即時執行(${}) 1.2、預編譯(#{}) 1.3、即…

tomcat設置PermSize

最近tomcat老是報錯,查看了日志出現PermGen 內存不夠用,重啟tomcat后查詢使用情況 通過啟動參數發現沒有設置 PermGen,繼續通過jmap查看 jmap -heap 21179 發現99%已使用,而且默認是30.5M,太小了,這里設置成256M 1. 創建setenv.sh文件 在/usr/local/tomcat/bin目錄下創建一個…

解鎖編程的新契機:深入探討Kotlin Symbol Processor (KSP)的編寫

解鎖編程的新契機:深入探討Kotlin Symbol Processor (KSP)的編寫 1. 引言 隨著軟件開發領域的不斷發展,新的工具和技術不斷涌現,以滿足開發者在構建高效、可維護和創新性的代碼方面的需求。Kotlin Symbol Processor(KSP&#xf…

從零開始,快速打造租車服務小程序的分享

隨著移動互聯網的發展,小程序成為了企業推廣和服務的重要手段之一。租車服務行業也不例外,通過打造一款租車服務小程序,企業可以更好地與用戶進行互動和交流,提供更方便快捷的租車服務。本文將介紹如何利用第三方制作平臺/工具快速…

PHP實現在線年齡計算器

1. 輸入日期查詢年齡 2. php laravel框架實現 代碼 /*** 在線年齡計算器*/public function ageDateCal(){// 輸入的生日時間$birthday $this->request(birthday);// 當前時間$currentDate date(Y-m-d);// 計算周歲$age date_diff(date_create($birthday), date_create($…

Eleastisearch5.2.2利用鏡像遷移構建實例后ES非健康狀態

正常遷移完成后啟動服務,查看ES非健康狀態 此時觀察ES集群狀態:curl -XGET -u elastic:xxx localhost:9200/_cluster/health?pretty 注意到"active_shards_percent_as_number" : 88.8888 該項的值不產生變化;集群狀態"status" : “…

8-1 統計字符

本題要求編寫程序,輸入10個字符,統計其中英文字母、空格或回車、數字字符和其他字符的個數。 輸入格式: 輸入為10個字符。最后一個回車表示輸入結束,不算在內。 輸出格式: 在一行內按照 letter 英文字母個數, blank 空格或回車個數, d…

升級指定版本Node.js或npm

一. 下載指定node.js版本Node.js 二. 升級node.js版本 打開電腦cmd 輸入 npm install node18.17.1 -g 三. 升級npm版本 打開電腦cmd 輸入 npm install npm8.1.2 -g

SQL注入之Oracle注入

SQL注入之Oracle注入 7.1 SQL注入之Oracle環境搭建 前言 Oracle Database,又名Oracle RDBMS,或簡稱Oracle。是甲骨文公司的一款關系數據庫管理系統。它是在數據庫領域一直處于領先地位的產品。可以說Oracle數據庫系統是世界上流行的關系數據庫管理系統…

在WordPress站點中展示閱讀量等流量分析數據(超詳細實現)

這篇文章也可以在我的博客中查看 關于本文 專業的流量統計系統能夠相對真實地反應網站的訪問情況。 這些數據可以在后臺很好地進行分析統計,但有時我們希望在網站前端展示一些數據 最常見的情景就是:展示頁面的瀏覽量 這簡單的操作當然也可以通過簡單…

(el-Form)操作(不使用 ts):Element-plus 中 Form 表單組件校驗規則等的使用

Ⅰ、Element-plus 提供的 Form 表單組件與想要目標情況的對比: 1、Element-plus 提供 Form 表單組件情況: 其一、Element-plus 自提供的 Form 代碼情況為(示例的代碼): // Element-plus 自提供的代碼: // 此時是使用了 ts 語言環…

6.3 社會工程學攻擊

數據參考:CISP官方 目錄 社會工程學攻擊概念社會工程學攻擊利用的人性 “弱點”典型社會工程學攻擊方式社會工程學攻擊防護 一、社會工程學攻擊概念 什么是社會工程學攻擊 也被稱為 "社交工程學" 攻擊利用人性弱點 (本能反應、貪婪、易于信任等) 進…

螢石直播以及回放的接入和銷毀

以下基于vue項目 1.安裝 npm i ezuikit-js 2、導入 main.js中 import EZUIKit from "ezuikit-js"; //導入螢石Vue.use(EZUIKit); 3、創建容器 <div class"video"><div id"video-container"></div><!-- <iframe :src…

棧存儲結構詳解

目錄 棧存儲結構詳解 進棧和出棧 棧的具體實現 棧的應用 什么是隊列&#xff08;隊列存儲結構&#xff09; 棧存儲結構詳解 同順序表和鏈表一樣&#xff0c;棧也是用來存儲邏輯關系為 "一對一" 數據的線性存儲結構&#xff0c;如圖 1 所示。 圖 1 棧存儲結構示意…

HTML5的介紹和基本框架

目錄 HTML5 HTML5介紹 HTML5的DOCTYPE聲明 HTML5基本骨架 html標簽 head標簽 body標簽 title標簽 meta標簽 在vscode中寫出第一個小框架 HTML5 HTML5介紹 HTML5是用來描述網頁的一種語言&#xff0c;被稱為超文本標記語言。用HTML5編寫的文件&#xff0c;后綴以.ht…

設備加密狗

場景描述 隨著科技的飛速發展&#xff0c;越來越多的智能設備走進生產加工車間。例如智能雕刻機、鈑金機、 榫槽機、鉆孔機、磨刀機等等。 目前市場的智能設備具有一個共同的特點&#xff0c;內置嵌入操作系統&#xff0c;如windows或者linux系統。設備制造商提供智能設備出…

20天學會rust(四)常見系統庫的使用

前面已經學習了rust的基礎知識&#xff0c;今天我們來學習rust強大的系統庫&#xff0c;從此coding事半功倍。 集合 數組&可變長數組 在 Rust 中&#xff0c;有兩種主要的數組類型&#xff1a;固定長度數組&#xff08;Fixed-size Arrays&#xff09;和可變長度數組&…

Ajax如何理解

什么是ajax ●認識前后端交互 ○就是 前端 與 后端的 一種通訊方式 ○主要使用的技術棧就是 ajax (async javascript and xml) ●ajax 特點 ○使用 ajax 技術網頁應用能夠快速的將新內容呈現在用戶界面 ○并且不需要刷新整個頁面, 也就是能夠讓頁面有 "無…

Java技術整理(5)—— Spring篇

Spring是一個全面的全面的、企業應用開發一站式的解決方案&#xff0c;貫穿表現層、業務層、持久層。但是 Spring 仍然可以和其他的框架無縫整合。 1、Spring的核心組件 &#xff08;1&#xff09;數據層&#xff1a; JDBC、ORM、OXM、JMS、Transations &#xff08;2&#x…