1. 程式人生 > >Redis 安裝和Java中使用(一)

Redis 安裝和Java中使用(一)

Redis是個記憶體資料庫,同時它是單執行緒的。

  • Redis支援資料的持久化,可以將記憶體中的資料儲存在磁碟中,重啟的時候可以再次載入進行使用。
  • Redis不僅僅支援簡單的key-value型別的資料,同時還提供list,set,zset,hash等資料結構的儲存。
  • Redis支援資料的備份,即master-slave模式的資料備份。

1 windows安裝

  1. 啟動 cmd 視窗 使用cd命令切換目錄到 C:\redis 執行 redis-server.exe或者開啟安裝目錄直接點選執行redis-server.exe (使用過程中不要關閉)。
    這裡寫圖片描述
  2. 另外 啟動 一個cmd 視窗 使用cd命令切換目錄到 C:\redis 執行 redis-cli.exe -h localhost -p 6379 或者直接點選執行redis-cli.exe檔案。
    這裡寫圖片描述

2 Redis 配置

Redis 的配置檔案位於 Redis 安裝目錄下,檔名為 redis.conf。
可以通過 config 命令檢視或設定配置項。
如獲取最大連線數: config get maxclients
這裡寫圖片描述

3 Redis命令

連線本地伺服器

$ redis-cli

連線遠端伺服器

$ redis-cli -h host -p port -a password

測試是否連線成功

$ ping

4 Java 使用 Redis

import redis.clients.jedis.Jedis;
public class RedisInJava {
   public
static void main(String[] args) { //連線本地的 Redis 服務 Jedis jedis = new Jedis("localhost"); //檢視服務是否執行 System.out.println("Server is running: "+jedis.ping()); } }

輸出如下結果:
Server is running: PONG
測試連線成功。

5 Redis 鍵(key)

基本命令:

    DEL key 該命令用於在 key 存在時刪除 key。
    DUMP key 序列化給定 key
,並返回被序列化的值。 EXISTS key 檢查給定 key 是否存在。 EXPIRE key seconds為給定 key 設定過期時間。 EXPIREAT key timestamp EXPIREAT 的作用和 EXPIRE 類似,都用於為 key 設定過期時間。 不同在於 EXPIREAT 命令接受的時間引數是 UNIX 時間戳(unix timestamp)。 PEXPIRE key milliseconds 設定 key 的過期時間以毫秒計。 PEXPIREAT key milliseconds-timestamp 設定 key 過期時間的時間戳(unix timestamp) 以毫秒計 KEYS pattern 查詢所有符合給定模式( pattern)的 key 。 MOVE key db 將當前資料庫的 key 移動到給定的資料庫 db 當中。 PERSIST key 移除 key 的過期時間,key 將持久保持。 PTTL key 以毫秒為單位返回 key 的剩餘的過期時間。 TTL key 以秒為單位,返回給定 key 的剩餘生存時間(TTL, time to live)。 RANDOMKEY 從當前資料庫中隨機返回一個 key 。 RENAME key newkey 修改 key 的名稱 RENAMENX key newkey 僅當 newkey 不存在時,將 key 改名為 newkey 。 TYPE key 返回 key 所儲存的值的型別。

Java示例

public class KeyRedisApp {
    public static void main(String[] args) {
        Jedis jedis = JedisUtil.getInstance().getJedis();
        System.out.println("Server is running: "+jedis.ping());
        //KEYS pattern 
        System.out.println("KEYS:"+jedis.keys("*key*"));
        //RENAME key newkey 
        jedis.rename("runoobkey", "runoobkeynew");
        System.out.println("RENAME:"+jedis.keys("*key*"));
        //TYPE key 
        System.out.println("KEYS:"+jedis.type("hkey2"));
    }
}

6 Redis 注意事項

  1. 掌控儲存在Redis中的所有鍵
    刪除一些不在使用的資料。
  2. 控制所有鍵名的長度
    鍵名在標識資料的同時,注意鍵名長度。
  3. 使用合適的資料結構
    1)對於數量較大(成千上百萬),建議使用雜湊將資料分組儲存,因為雜湊表效率高,佔用記憶體小。
    2) 如果不需要使用set特性時,使用list替代set,因為list使用記憶體更小,且速度更快。
    3)Sorted sets是最昂貴的資料結構,不太建議使用,使用雜湊表替換。
    4)考慮使用bitmaps或者bitsets,它們允許你在Redis值上執行多個bit-level操作。
  4. 使用SCAN時別使用鍵
    SCAN 命令是一個基於遊標的迭代器。SCAN 命令每次被呼叫之後, 都會向用戶返回一個新的遊標,使用者在下次迭代時需要使用這個新遊標作為 SCAN 命令的遊標引數, 以此來延續之前的迭代過程。同時,使用SCAN,使用者還可以使用keyname模式和count選項對命令進行調整。對比KEYS命令,雖然SCAN無法一次性返回所有匹配結果,但是卻規避了阻塞系統這個高風險,從而也讓一些操作可以放在主節點上執行。
    SCAN相關命令還包括SSCAN 命令、HSCAN 命令和 ZSCAN 命令,分別用於集合、雜湊鍵及有續集等。