1. 程式人生 > >redis簡介-安裝部署-命令說明

redis簡介-安裝部署-命令說明

1Redis的使用場景:

  1. 關係資料庫的快取
  2. 可以做任務佇列(執行模組1,模組2,模組3,模組4,模組5 ........)
  3. 大量資料運算(兩個集合求交集)
  4. 排行旁之類(redis非常擅長大量資料的排行榜)
  5. GEO地理位置(也是我們常用的附近的人)

2redis安裝部署方式

2.1前端安裝部署redis

Cd /usr/local/redis/src
執行服務端:./redis-server
另外啟動一個客戶端ssh視窗執行
執行客戶端(預設連線本機6379埠):./redis-cli
劣勢:這種部署方式不能進行叢集部署
另外一臺電腦登入redis執行:./redis-cli  –h  IP地址 –P 埠

2.2後端安裝部署redis

vim redis.conf 修改daemonize no 改成 daemonize yes如下圖所示:

 

執行:./src/redis-server ./redis.conf

檢視:ps -ef |grep -i redis 可以看到redis的程序是否已經啟動

3redis資料型別【重點內容】

  1. Redis使用的都是K-V資料型別
  2. Key:全部是字串型別
  3. Value:字串(string、hash、list(linkedlist連結串列,新增/刪除效率極高)HSET、有序的set集合,一般的set集合是無序的)
  4. Key的名字是自定義的,不要太長

4redis命令-string命令

Mysql關係型資料庫,二進位制不安全;編碼和解碼只在客戶端發生,不在客戶端和磁碟編解碼;專案建立是GBK或者UTF8以後都不會發生其他的

而MySQL編解碼過程:

 5常用命令

5.1賦值操作

 如果賦予專案的KEY,新的value會覆蓋舊的value值

5.2取值

5.3刪除

 

5.4getset操作

5.5lncr key 

計數器的使用:incr和decr只能對數值進行操作(遞增和遞減)

 5.6Decr

 5.7Incrby

 5.8decrby

 5.9string使用環境

主要使用者儲存JSON格式的字串

5.10Hash命令

Hash----------{username:“張三”,age:14}

 

 5.11增加數字

 6Jedis介紹

  1. Java的客戶端支援:jedis、redisson、jredis、JDBC-redis
  2. Redis有什麼命令,jedis就有什麼方法
package cn.itcast.demo1;

import org.junit.Test;

import redis.clients.jedis.Jedis;

Public class Demo1{

/**
*單例項連結redis資料庫
*/
    @Test
    public viod run1(){
        Jedis jedis = new Jedis("192.168.56.11",6379)
        jedis.set("name","張三");
        System.out.println(jedis.get("name"));
    }
}

 6.1Jedis連結redis的連線池程式碼

/**
* Jedis連線池
*/
@Test
public void run2(){

    //1.設定連線池的配置物件
    JedisPoolconfig config = new JedisPoolConfig();

    //設定池中最大連結數【根據自己的實際情況和贏家配置情況來定最大連線數量】
    config.setMaxTotal(500);//自己設定的最大連線數為500

    //設定空閒時池中保有的最大連線數【根據自己的實際情況和贏家配置情況來定最大連線數量】
    config.setMaxIdle(10);

    //2.設定連線池物件(解決連線到臺伺服器或者伺服器叢集去)
    JedisPool pool = new JedisPool(config,"192.168.56.11",6379);

    //3.從池中獲取連線物件
    Jedis jedis = pool.getResource();
    System.out.println(jedis.get("name"));

    //4.連線歸還池中(說得很通俗點就是某個應用需要寫資訊連線redis結束後把這個連線關閉,釋放CPU、記憶體,以便其他使用者連線redis叢集)
    jedis.close();

}

6.2連線池工具jedisutils

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

public class JedisUtils{
    //1.定義一個連線池物件

    private final static JedisPool POOL;

    static{
        //初始化操作
        //1.設定連線池的配置物件
        JedisPoolconfig config = new JedisPoolConfig();
       
         //設定池中最大連結數【根據自己的實際情況和贏家配置情況來定最大連線數量】                                                       
        config.setMaxTotal(500);//自己設定的最大連線數為500

        //設定空閒時池中保有的最大連線數【根據自己的實際情況和贏家配置情況來定最大連線數量】
        config.setMaxIdle(10);

        //2.設定連線池物件
        POOL= new JedisPool(config,"192.168.56.11",6379);
    }

/**
*從池中獲取連線
*/

    public static Jedis getJedis(){
        return POOL.getResource();
    }
}

7持久化

7.1RDB持久化

  1. RDB:redis database(時間段記憶體中的資料寫入到磁碟中,redis會fork一個子程序,這個子程序來進行持久化,會將資料寫到一個臨時檔案,主程序不進行IO進行操作;優點就是:比AOF執行更加高效,恢復比較簡單一次性操作完成;RDB最後一次持久化的資料可能丟失)
  2. Fork:fork的作用是複製一個與當前程序一樣的程序;新程序的所有資料(變數、環境變數、程式計數器等)數值都和原程序一致,但是一個全新的程序,並作為程序的子程序。
  3. RDB持久化的策略:

1)1分鐘內修改了1萬次

2)5分鐘內修改了10萬次

3)15分鐘內修改了1次

優點:

  1. 適合大規模的資料恢復
  2. 對資料完整性和一致性要求不高

劣勢:

  1. 2分鐘這個時間段有可能丟失資料
  2. Fork比較消耗CPU、記憶體等資源

7.2AOF持久化

AOF:append only file 詳細見:https://redisbook.readthedocs.io/en/latest/internal/aof.html

8redis事務處理

What:可以一次執行多個命令,本質是一組命令的集合。一個事務的所有命令都會序列化,按順序地序列化執行執行而不會被其他命令插入,不許加塞。

How:一個佇列中,一次性、順序性、排他性的執行一系列命令列。

1.事務的命令展示:

 2.執行命令顯示結果: