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.執行命令顯示結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章