1. 程式人生 > 實用技巧 >iManager for K8S 配置https證書流程步驟

iManager for K8S 配置https證書流程步驟

Redis 資料備份與恢復

RedisSAVE命令用於建立當前資料庫的備份。

語法

redis Save 命令基本語法如下:

redis 127.0.0.1:6379> SAVE 

例項

redis 127.0.0.1:6379> SAVE 
OK

該命令將在 redis 安裝目錄中建立dump.rdb檔案。


恢復資料

如果需要恢復資料,只需將備份檔案 (dump.rdb) 移動到 redis 安裝目錄並啟動服務即可。獲取 redis 目錄可以使用CONFIG命令,如下所示:

 
redis 127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "/usr/local/redis/bin"

以上命令CONFIG GET dir輸出的 redis 安裝目錄為 /usr/local/redis/bin。


Bgsave

建立 redis 備份檔案也可以使用命令BGSAVE,該命令在後臺執行。

例項

127.0.0.1:6379> BGSAVE

Background saving started

Redis 安全

我們可以通過 redis 的配置檔案設定密碼引數,這樣客戶端連線到 redis 服務就需要密碼驗證,這樣可以讓你的 redis 服務更安全。

例項

我們可以通過以下命令檢視是否設定了密碼驗證:

127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) ""

預設情況下 requirepass 引數是空的,這就意味著你無需通過密碼驗證就可以連線到 redis 服務。

你可以通過以下命令來修改該引數:

127.0.0.1:6379> CONFIG set requirepass "runoob"
OK
127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) "runoob"

設定密碼後,客戶端連線 redis 服務就需要密碼驗證,否則無法執行命令。

語法

AUTH命令基本語法格式如下:

127.0.0.1:6379> AUTH password

例項

127.0.0.1:6379> AUTH "runoob"
OK
127.0.0.1:6379> SET mykey "Test value"
OK
127.0.0.1:6379> GET mykey
"Test value"

Redis 客戶端連線

Redis 通過監聽一個 TCP 埠或者 Unix socket 的方式來接收來自客戶端的連線,當一個連線建立後,Redis 內部會進行以下一些操作:

  • 首先,客戶端 socket 會被設定為非阻塞模式,因為 Redis 在網路事件處理上採用的是非阻塞多路複用模型。
  • 然後為這個 socket 設定 TCP_NODELAY 屬性,禁用 Nagle 演算法
  • 然後建立一個可讀的檔案事件用於監聽這個客戶端 socket 的資料傳送

最大連線數

在 Redis2.4 中,最大連線數是被直接硬編碼在程式碼裡面的,而在2.6版本中這個值變成可配置的。

maxclients 的預設值是 10000,你也可以在 redis.conf 中對這個值進行修改。

config get maxclients

1) "maxclients"
2) "10000"

例項

以下例項我們在服務啟動時設定最大連線數為 100000:

redis-server --maxclients 100000

客戶端命令

S.N.命令描述
1 CLIENT LIST 返回連線到 redis 服務的客戶端列表
2 CLIENT SETNAME 設定當前連線的名稱
3 CLIENT GETNAME 獲取通過 CLIENT SETNAME 命令設定的服務名稱
4 CLIENT PAUSE 掛起客戶端連線,指定掛起的時間以毫秒計
5 CLIENT KILL 關閉客戶端連線

Redis 管道技術

Redis是一種基於客戶端-服務端模型以及請求/響應協議的TCP服務。這意味著通常情況下一個請求會遵循以下步驟:

  • 客戶端向服務端傳送一個查詢請求,並監聽Socket返回,通常是以阻塞模式,等待服務端響應。
  • 服務端處理命令,並將結果返回給客戶端。

https://blog.csdn.net/qq_24313635/article/details/83054300

Redis 分割槽

分割槽是分割資料到多個Redis例項的處理過程,因此每個例項只儲存key的一個子集。

分割槽的優勢

  • 通過利用多臺計算機記憶體的和值,允許我們構造更大的資料庫。
  • 通過多核和多臺計算機,允許我們擴充套件計算能力;通過多臺計算機和網路介面卡,允許我們擴充套件網路頻寬。

分割槽的不足

redis的一些特性在分割槽方面表現的不是很好:

  • 涉及多個key的操作通常是不被支援的。舉例來說,當兩個set對映到不同的redis例項上時,你就不能對這兩個set執行交集操作。
  • 涉及多個key的redis事務不能使用。
  • 當使用分割槽時,資料處理較為複雜,比如你需要處理多個rdb/aof檔案,並且從多個例項和主機備份持久化檔案。
  • 增加或刪除容量也比較複雜。redis叢集大多數支援在執行時增加、刪除節點的透明資料平衡的能力,但是類似於客戶端分割槽、代理等其他系統則不支援這項特性。然而,一種叫做presharding的技術對此是有幫助的。

分割槽型別

Redis 有兩種型別分割槽。 假設有4個Redis例項 R0,R1,R2,R3,和類似user:1,user:2這樣的表示使用者的多個key,對既定的key有多種不同方式來選擇這個key存放在哪個例項中。也就是說,有不同的系統來對映某個key到某個Redis服務。

範圍分割槽

最簡單的分割槽方式是按範圍分割槽,就是對映一定範圍的物件到特定的Redis例項。

比如,ID從0到10000的使用者會儲存到例項R0,ID從10001到 20000的使用者會儲存到R1,以此類推。

這種方式是可行的,並且在實際中使用,不足就是要有一個區間範圍到例項的對映表。這個表要被管理,同時還需要各 種物件的對映表,通常對Redis來說並非是好的方法。

雜湊分割槽

另外一種分割槽方法是hash分割槽。這對任何key都適用,也無需是object_name:這種形式,像下面描述的一樣簡單:

  • 用一個hash函式將key轉換為一個數字,比如使用crc32 hash函式。對key foobar執行crc32(foobar)會輸出類似93024922的整數。
  • 對這個整數取模,將其轉化為0-3之間的數字,就可以將這個整數對映到4個Redis例項中的一個了。93024922 % 4 = 2,就是說key foobar應該被存到R2例項中。注意:取模操作是取除的餘數,通常在多種程式語言中用%操作符實現。

JAVA使用Redis

連線到 redis 服務

例項

import redis.clients.jedis.Jedis; public class RedisJava { public static void main(String[] args) { //連線本地的 Redis 服務 Jedis jedis = new Jedis("localhost"); // 如果 Redis 服務設定來密碼,需要下面這行,沒有就不需要 // jedis.auth("123456"); System.out.println("連線成功"); //檢視服務是否執行 System.out.println("服務正在執行: "+jedis.ping()); } }

編譯以上 Java 程式,確保驅動包的路徑是正確的。

連線成功
服務正在執行: PONG

Redis Java String(字串) 例項

例項

import redis.clients.jedis.Jedis; public class RedisStringJava { public static void main(String[] args) { //連線本地的 Redis 服務 Jedis jedis = new Jedis("localhost"); System.out.println("連線成功"); //設定 redis 字串資料 jedis.set("runoobkey", "www.runoob.com"); // 獲取儲存的資料並輸出 System.out.println("redis 儲存的字串為: "+ jedis.get("runoobkey")); } }

編譯以上程式。

連線成功
redis 儲存的字串為: www.runoob.com

Redis Java List(列表) 例項

例項

    @Test
    public void testRedisCon(){
        Jedis jedis = new Jedis("localhost");
        jedis.auth("renlong");
        jedis.set("renlong","這個是redis測試用的");
        jedis.lpush("1","dfsd");
        System.out.println(jedis.keys("*"));
        System.out.println(jedis.ping());
    }

編譯以上程式。

連線成功
列表項為: Taobao
列表項為: Google
列表項為: Runoob

Redis Java Keys 例項

例項

    @Test
    public void testRedisCon(){
        Jedis jedis = new Jedis("localhost");
        jedis.auth("renlong");
        jedis.set("renlong","這個是redis測試用的");
        jedis.lpush("1","dfsd");
        System.out.println(jedis.keys("*"));
        System.out.println(jedis.ping());
    }

編譯以上程式。

連線成功
runoobkey
site-list