天天看點

好程式員Java學習路線分享Redis快速入門二、Redis桌面版用戶端工具的使用三、Redis的配置檔案四、Java的Redis用戶端:Jedis五、Redis的五大資料類型六、使用Jedis連接配接池 

好程式員Java學習路線分享Redis快速入門,Redis的啟動

1.基于docker啟動

1) 不帶配置檔案啟動 docker run -p 6379:6379 redis

2) 帶配置檔案啟動

docker run -p 6379:6379 -v /usr/local/docker/redis/redis.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/etc/redis/redis.conf

3)使用docker容器内的用戶端來操作redis伺服器

以互動的方式進入到redis容器,再在/usr/local/bin/使用redis-cli工具連接配接redis伺服器

好程式員Java學習路線分享Redis快速入門二、Redis桌面版用戶端工具的使用三、Redis的配置檔案四、Java的Redis用戶端:Jedis五、Redis的五大資料類型六、使用Jedis連接配接池 
好程式員Java學習路線分享Redis快速入門二、Redis桌面版用戶端工具的使用三、Redis的配置檔案四、Java的Redis用戶端:Jedis五、Redis的五大資料類型六、使用Jedis連接配接池 

得輸密碼

auth java1904

2.使用原生tar包啟動

1)從官方下載下傳tar.gz壓縮包,上傳到linux中

2)解壓

tar -zxvf  ...

3)下載下傳make  

   apt-get install make

4)下載下傳gcc,因為redis是c寫的,需要gcc工具

apt-get intall gcc

5) 進入解壓出來的檔案夾内,然後使用make進行編譯

6)進入 src,執行./redis-server  ../redis.conf    開啟服務端

7)使用redis内部的用戶端,來連接配接服務端,對redis服務端進行操作

  src裡    執行   ./redis-cli

好程式員Java學習路線分享Redis快速入門二、Redis桌面版用戶端工具的使用三、Redis的配置檔案四、Java的Redis用戶端:Jedis五、Redis的五大資料類型六、使用Jedis連接配接池 

二、Redis桌面版用戶端工具的使用

好程式員Java學習路線分享Redis快速入門二、Redis桌面版用戶端工具的使用三、Redis的配置檔案四、Java的Redis用戶端:Jedis五、Redis的五大資料類型六、使用Jedis連接配接池 

三、Redis的配置檔案

redis.conf

在啟動redis伺服器時,可以通過配置檔案裡面的參數的設定,來設定伺服器,如果啟動redis伺服器,不帶配置檔案,那麼參數都是預設值。

1.解除本機綁定

# bind  127.0.0.1 注釋掉

2.redis資料庫預設擁有16個庫,資料會被存放在這16個庫中的某一個。

3.設定密碼

在連接配接時需要輸入密碼

好程式員Java學習路線分享Redis快速入門二、Redis桌面版用戶端工具的使用三、Redis的配置檔案四、Java的Redis用戶端:Jedis五、Redis的五大資料類型六、使用Jedis連接配接池 

四、Java的Redis用戶端:Jedis

redis自帶的用戶端: redis-cli

1.引入依賴

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>      

2.使用Jedis工具類

public class MyRedis {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("192.168.2.128",6379);
        jedis.auth("java1904");
        jedis.set("兩個月後的目标","12k");
        String target = jedis.get("兩個月後的目标");
        System.out.println(target);
    }
}

       

五、Redis的五大資料類型

1. String類型

1)增删改查

set  key  value    添加/修改  鍵值對

get  key  ==> value   根據鍵得到值

del  key1 [key2...]  根據鍵删除鍵值對,傳回值删除的個數

好程式員Java學習路線分享Redis快速入門二、Redis桌面版用戶端工具的使用三、Redis的配置檔案四、Java的Redis用戶端:Jedis五、Redis的五大資料類型六、使用Jedis連接配接池 

mset  k1 v1  k2 v2 [key value ...]    一次性插入多個值

mget  k1  k2              一次性拿多個值

2)其他指令

incr      對整數進行自增,浮點數也不行:   set  k1  1000          incr k1

decr    對整數進行遞減

incrby  鍵  步長    一次增長指定步長的值    

decrby  鍵  步長   一次減少指定步長的值

2. hash類型

資料類型的特點:

鍵 -  值:  鍵值對

而且 鍵裡可以存放多個鍵值對

hset   k1   鍵-值

hget   k1  鍵

hmset  k1  鍵-值  鍵-值 ...

hmget  k1  鍵  鍵...

hdel    k1   鍵  鍵...

其他指令:

hlen  k1

檢視k1有幾個鍵值對

hexists k1 鍵

檢視鍵是否存在于k1中

hgetall k1

獲得K1中的所有的鍵值對

注意: 在實際使用時,往往會使用這種命名方式:  通過“:”對鍵名進行分割,以起到語義化的效果。

比如  “user:1001:dreams”  : 使用者id是1001的這個使用者的所有夢想

如果鍵沖突了,那麼如果之前的資料類型與現在的資料類型不同,則會報這個異常:

redis.clients.jedis.exceptions.JedisDataException: WRONGTYPE Operation against a key holding the wrong kind of value

使用jedis進行操作時,hmset中需要存入map集合

HashMap<String,String> map = new HashMap<String, String>();
map.put("d1","10000");
map.put("d2","20000");
jedis.hmset("user:1001:dreams",map);
      

hash類型的應用場景: 存對象時更友善

好程式員Java學習路線分享Redis快速入門二、Redis桌面版用戶端工具的使用三、Redis的配置檔案四、Java的Redis用戶端:Jedis五、Redis的五大資料類型六、使用Jedis連接配接池 

3. 清單類型 List

清單可以實作棧和隊列的效果

好程式員Java學習路線分享Redis快速入門二、Redis桌面版用戶端工具的使用三、Redis的配置檔案四、Java的Redis用戶端:Jedis五、Redis的五大資料類型六、使用Jedis連接配接池 

lpop 從左邊出列隊

好程式員Java學習路線分享Redis快速入門二、Redis桌面版用戶端工具的使用三、Redis的配置檔案四、Java的Redis用戶端:Jedis五、Redis的五大資料類型六、使用Jedis連接配接池 

rpush 和  rpop

好程式員Java學習路線分享Redis快速入門二、Redis桌面版用戶端工具的使用三、Redis的配置檔案四、Java的Redis用戶端:Jedis五、Redis的五大資料類型六、使用Jedis連接配接池 

模拟棧的效果:

模拟隊列的效果: 先進先出

其他指令:

LLEN key,查詢清單的長度

LINDEX key index,擷取指定索引的值 get(int index)

LSET key index value,設定指定索引的值

Ltrim key start end 保留指定索引範圍的值

4.Set類型

Sadd key element [element] 添加元素

Scard key 計算元素個數

Smembers key 擷取所有的元素

Srem key element [element] 删除元素  

Sismember key element 判斷元素是否在集合中,存在傳回1,否則傳回0

Spop key 從集合随機彈出元素

5.zset類型

是一個有序的集合

常用指令:

Zadd key score member [score member ...] 添加成員,并為每個成員設定分數

Zcard key 計算成員的個數

Zscore key member 計算某個成員的分數

Zrank key member 計算某個成員的排名

Zincrby key increment member 增加成員的分數

Zrange key start end withscores 傳回指定排名範圍的成員

zrevrange key start end 逆序展示

Zrem key member [member] 删除成員、

jedis的操作

@Test
public void testZset(){
    Jedis jedis = new Jedis("192.168.2.128",6379);
    jedis.auth("java1904");

    HashMap<String,Double> map = new HashMap<String, Double>();

    map.put("l1",100d);
    map.put("l2",200d);


    // map是一個HashMap<String,Double> 的map 
    jedis.zadd("order1",map);

    jedis.zincrby("order1",200d,"l1");

    Set<String> order1 = jedis.zrevrange("order1", 0, -1);

    System.out.println(order1);


}

      

六、使用Jedis連接配接池

package com.qf.redis.util;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class JedisPoolUtil {

    private static JedisPool pool ;

    static{

        JedisPoolConfig config = new JedisPoolConfig();

        config.setMaxIdle(100);
        config.setMaxWaitMillis(2000);
        config.setMaxTotal(200);

        String host = "192.168.2.128";
        pool = new JedisPool(config,host);

    }




    public static Jedis getJedisFromPool(){

       return  pool.getResource();

    }

}      

使用連接配接池:

Jedis jedis = JedisPoolUtil.getJedisFromPool();

jedis.auth("java1904");