主頁 > 資料庫 > Linux、Windows下Redis的安裝即Redis的基本使用詳解

Linux、Windows下Redis的安裝即Redis的基本使用詳解

2022-09-27 09:06:21 資料庫


前言


什么是Redis


Redis是一個基于記憶體的key-value結構資料庫,Redis 是互聯網技術領域使用最為廣泛的存盤中間件,它是「Remote Dictionary Service」的首字母縮寫,也就是「遠程字典服務」,


在這里插入圖片描述



在這里插入圖片描述



在這里插入圖片描述


使用Redis能做什么


  • 資料快取

  • 訊息佇列

  • 注冊中心

  • 發布訂閱


Redis入門


Redis簡介


Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker. 翻譯為:Redis是一個開源的記憶體中的資料結構存盤系統,它可以用作:資料庫、快取和訊息中間件,


官網:https://redis.io


Redis是用C語言開發的一個開源的高性能鍵值對(key-value)資料庫,官方提供的資料是可以達到100000+的QPS(每秒內查詢次數),它存盤的value型別比較豐富,也被稱為結構化的NoSql資料庫,

NoSql(Not Only SQL),不僅僅是SQL,泛指非關系型資料庫,NoSql資料庫并不是要取代關系型資料庫,而是關系型資料庫的補充,


關系型資料庫(RDBMS):

  • Mysql

  • Oracle

  • DB2

  • SQLServer


非關系型資料庫(NoSql):

  • Redis

  • Mongo db

  • MemCached


Redis下載與安裝


Redis下載

Redis安裝包分為windows版和Linux版:

  • Windows版下載地址:https://github.com/microsoftarchive/redis/releases

  • Linux版下載地址: https://download.redis.io/releases/

下載后得到下面安裝包:


在這里插入圖片描述


Redis安裝

1)在Linux中安裝Redis

在Linux系統安裝Redis步驟:

  1. 將Redis安裝包上傳到Linux

  2. 解壓安裝包,命令:tar -zxvf redis-4.0.0.tar.gz -C /usr/local

  3. 安裝Redis的依賴環境gcc,命令:yum install gcc-c++

  4. 進入/usr/local/redis-4.0.0,進行編譯,命令:make

  5. 進入redis的src目錄進行安裝,命令:make install

安裝后重點檔案說明:


/usr/local/redis-4.0.0/src/redis-server:Redis服務啟動腳本

/usr/local/redis-4.0.0/src/redis-cli:Redis客戶端腳本

/usr/local/redis-4.0.0/redis.conf:Redis組態檔


2)在Windows中安裝Redis

Redis的Windows版屬于綠色軟體,直接解壓即可使用,解壓后目錄結構如下:


在這里插入圖片描述


Redis服務啟動與停止


1)Linux系統中啟動和停止Redis

執行Redis服務啟動腳本檔案redis-server


在這里插入圖片描述


通過啟動日志可以看到,Redis默認埠號為6379

Ctrl + C停止Redis服務

通過redis-cli可以連接到本地的Redis服務,默認情況下不需要認證即可連接成功,

退出客戶端可以輸入exit或者quit命令,


2)Windows系統中啟動和停止Redis

Windows系統中啟動Redis,直接雙擊redis-server.exe即可啟動Redis服務,redis服務默認埠號為6379


在這里插入圖片描述


Ctrl + C停止Redis服務

雙擊redis-cli.exe即可啟動Redis客戶端,默認連接的是本地的Redis服務,而且不需要認證即可連接成功,


在這里插入圖片描述


退出客戶端可以輸入exit或者quit命令,


Redis組態檔

前面我們已經啟動了Redis服務,默認情況下Redis啟動后是在前臺運行,而且客戶端不需要密碼就可以連接到Redis服務,如果我們希望Redis服務啟動后是在后臺運行,同時希望客戶端認證通過后才能連接到Redis服務,應該如果做呢?


此時就需要修改Redis的組態檔:

  • Linux系統中Redis組態檔:REDIS_HOME/redis.conf

  • Windows系統中Redis組態檔:REDIS_HOME/redis.windows.conf


通過修改Redis組態檔可以進行如下配置:

1) 設定Redis服務后臺運行

將組態檔中的daemonize配置項改為yes,默認值為no,

注意:Windows版的Redis不支持后臺運行,


2) 設定Redis服務密碼

將組態檔中的 # requirepass foobared 配置項取消注釋,默認為注釋狀態,foobared為密碼,可以根據情況自己指定,


3) 設定允許客戶端遠程連接Redis服務

Redis服務默認只能客戶端本地連接,不允許客戶端遠程連接,將組態檔中的 bind 127.0.0.1 配置項注釋掉,


解釋說明:

Redis組態檔中 # 表示注釋

Redis組態檔中的配置項前面不能有空格,需要頂格寫

daemonize:用來指定redis是否要用守護執行緒的方式啟動,設定成yes時,代表開啟守護行程模式,在該模式下,redis會在后臺運行

requirepass:設定Redis的連接密碼

bind:如果指定了bind,則說明只允許來自指定網卡的Redis請求,如果沒有指定,就說明可以接受來自任意一個網卡的Redis請求,


注意:修改組態檔后需要重啟Redis服務配置才能生效,并且啟動Redis服務時需要顯示的指定組態檔:


1)Linux中啟動Redis服務

# 進入Redis安裝目錄
cd /usr/local/redis-4.0.0
# 啟動Redis服務,指定使用的組態檔
./src/redis-server ./redis.conf

2)Windows中啟動Redis服務


在這里插入圖片描述


由于Redis組態檔中開啟了認證校驗,即客戶端連接時需要提供密碼,此時客戶端連接方式變為:


在這里插入圖片描述


解釋說明:

-h:指定連接的Redis服務的ip地址

-p:指定連接的Redis服務的埠號

-a:指定連接的Redis服務的密碼


Redis資料型別


Redis存盤的是key-value結構的資料,其中key是字串型別,value有5種常用的資料型別:

  • 字串 string

  • 哈希 hash

  • 串列 list

  • 集合 set

  • 有序集合 sorted set / zset


Redis 5種常用資料型別


在這里插入圖片描述


解釋說明:

字串(string):普通字串,常用

哈希(hash):適合存盤物件

串列(list):按照插入順序排序,可以有重復元素

集合(set):無序集合,沒有重復元素

有序集合(sorted set / zset):集合中每個元素關聯一個分數(score),根據分數升序排序,沒有重復元素


Redis常用命令


字串string操作命令


Redis 中字串型別常用命令:

  • SET key value 設定指定key的值

  • GET key 獲取指定key的值

  • SETEX key seconds value 設定指定key的值,并將 key 的過期時間設為 seconds 秒

  • SETNX key value 只有在 key 不存在時設定 key 的值

更多命令可以參考Redis中文網:https://www.redis.net.cn


哈希hash操作命令


Redis hash 是一個string型別的 field 和 value 的映射表,hash特別適合用于存盤物件,常用命令:

  • HSET key field value 將哈希表 key 中的欄位 field 的值設為 value

  • HGET key field 獲取存盤在哈希表中指定欄位的值

  • HDEL key field 洗掉存盤在哈希表中的指定欄位

  • HKEYS key 獲取哈希表中所有欄位

  • HVALS key 獲取哈希表中所有值

  • HGETALL key 獲取在哈希表中指定 key 的所有欄位和值


在這里插入圖片描述


串列list操作命令


Redis 串列是簡單的字串串列,按照插入順序排序,常用命令:

  • LPUSH key value1 [value2] 將一個或多個值插入到串列頭部

  • LRANGE key start stop 獲取串列指定范圍內的元素

  • RPOP key 移除并獲取串列最后一個元素

  • LLEN key 獲取串列長度

  • BRPOP key1 [key2 ] timeout 移出并獲取串列的最后一個元素, 如果串列沒有元素會阻塞串列直到等待超 時或發現可彈出元素為止


在這里插入圖片描述


集合set操作命令


Redis set 是string型別的無序集合,集合成員是唯一的,這就意味著集合中不能出現重復的資料,常用命令:

  • SADD key member1 [member2] 向集合添加一個或多個成員

  • SMEMBERS key 回傳集合中的所有成員

  • SCARD key 獲取集合的成員數

  • SINTER key1 [key2] 回傳給定所有集合的交集

  • SUNION key1 [key2] 回傳所有給定集合的并集

  • SDIFF key1 [key2] 回傳給定所有集合的差集

  • SREM key member1 [member2] 移除集合中一個或多個成員


在這里插入圖片描述


有序集合sorted set操作命令


Redis sorted set 有序集合是 string 型別元素的集合,且不允許重復的成員,每個元素都會關聯一個double型別的分數(score) ,redis正是通過分數來為集合中的成員進行從小到大排序,有序集合的成員是唯一的,但分數卻可以重復,


常用命令:

  • ZADD key score1 member1 [score2 member2] 向有序集合添加一個或多個成員,或者更新已存在成員的 分數

  • ZRANGE key start stop [WITHSCORES] 通過索引區間回傳有序集合中指定區間內的成員

  • ZINCRBY key increment member 有序集合中對指定成員的分數加上增量 increment

  • ZREM key member [member ...] 移除有序集合中的一個或多個成員


在這里插入圖片描述


通用命令

Redis中的通用命令,主要是針對key進行操作的相關命令:

  • KEYS pattern 查找所有符合給定模式( pattern)的 key

  • EXISTS key 檢查給定 key 是否存在

  • TYPE key 回傳 key 所儲存的值的型別

  • TTL key 回傳給定 key 的剩余生存時間(TTL, time to live),以秒為單位

  • DEL key 該命令用于在 key 存在是洗掉 key


在Java中操作Redis


前面我們講解了Redis的常用命令,這些命令是我們操作Redis的基礎,那么我們在java程式中應該如何操作Redis呢?這就需要使用Redis的Java客戶端,就如同我們使用JDBC操作MySQL資料庫一樣,


Redis 的 Java 客戶端很多,官方推薦的有三種:

  • Jedis

  • Lettuce

  • Redisson

Spring 對 Redis 客戶端進行了整合,提供了 Spring Data Redis,在Spring Boot專案中還提供了對應的Starter,即 spring-boot-starter-data-redis,


Jedis


Jedis 是 Redis 的 Java 版本的客戶端實作,

maven坐標:

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

使用 Jedis 操作 Redis 的步驟:

  1. 獲取連接

  2. 執行操作

  3. 關閉連接


示例代碼:

package com.execise.test;

import org.junit.Test;
import redis.clients.jedis.Jedis;
import java.util.Set;

/**
 * 使用Jedis操作Redis
 */
public class JedisTest {

    @Test
    public void testRedis(){
        //1 獲取連接
        Jedis jedis = new Jedis("localhost",6379);
        
        //2 執行具體的操作
        jedis.set("username","xiaoming");

        String value = https://www.cnblogs.com/wren/p/jedis.get("username");
        System.out.println(value);

        //jedis.del("username");

        jedis.hset("myhash","addr","bj");
        String hValue = https://www.cnblogs.com/wren/p/jedis.hget("myhash", "addr");
        System.out.println(hValue);

        Set<String> keys = jedis.keys("*");
        for (String key : keys) {
            System.out.println(key);
        }

        //3 關閉連接
        jedis.close();
    }
}

Spring Data Redis


Spring Data Redis 是 Spring 的一部分,提供了在 Spring 應用中通過簡單的配置就可以訪問 Redis 服務,對 Redis 底層開發包進行了高度封裝,在 Spring 專案中,可以使用Spring Data Redis來簡化 Redis 操作,


網址:https://spring.io/projects/spring-data-redis


在這里插入圖片描述


maven坐標:

<dependency>
	<groupId>org.springframework.data</groupId>
	<artifactId>spring-data-redis</artifactId>
	<version>2.4.8</version>
</dependency>

Spring Boot提供了對應的Starter,maven坐標:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

Spring Data Redis中提供了一個高度封裝的類:RedisTemplate,針對 Jedis 客戶端中大量api進行了歸類封裝,將同一型別操作封裝為operation介面,具體分類如下:

  • ValueOperations:簡單K-V操作

  • SetOperations:set型別資料操作

  • ZSetOperations:zset型別資料操作

  • HashOperations:針對hash型別的資料操作

  • ListOperations:針對list型別的資料操作


使用方式


環境搭建

第一步:創建maven專案springdataredis_demo,配置pom.xml檔案

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.5</version>
        <relativePath/>
    </parent>
    <groupId>com.execise</groupId>
    <artifactId>springdataredis_demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.4.5</version>
            </plugin>
        </plugins>
    </build>
</project>

第二步:撰寫啟動類

package com.execise;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class App {

    public static void main(String[] args) {
        SpringApplication.run(App.class,args);
    }

}

第三步:配置application.yml

spring:
  application:
    name: springdataredis_demo
  #Redis相關配置
  redis:
    host: localhost
    port: 6379
    #password: 123456
    database: 0 #操作的是0號資料庫
    jedis:
      #Redis連接池配置
      pool:
        max-active: 8 #最大連接數
        max-wait: 1ms #連接池最大阻塞等待時間
        max-idle: 4 #連接池中的最大空閑連接
        min-idle: 0 #連接池中的最小空閑連接

解釋說明:

spring.redis.database:指定使用Redis的哪個資料庫,Redis服務啟動后默認有16個資料庫,編號分別是從0到15,

可以通過修改Redis組態檔來指定資料庫的數量,


第四步:提供配置類

package com.execise.config;

import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;

/**
 * Redis配置類
 */
@Configuration
public class RedisConfig extends CachingConfigurerSupport {
    @Bean
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {

        RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();

        //默認的Key序列化器為:JdkSerializationRedisSerializer
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setConnectionFactory(connectionFactory);

        return redisTemplate;
    }
}

解釋說明:

當前配置類不是必須的,因為 Spring Boot 框架會自動裝配 RedisTemplate 物件,但是默認的key序列化器為JdkSerializationRedisSerializer,導致我們存到Redis中后的資料和原始資料有差別


第五步:提供測驗類

package com.execise.test;

import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@SpringBootTest
@RunWith(SpringRunner.class)
public class SpringDataRedisTest {

    @Autowired
    private RedisTemplate redisTemplate;
    
}

操作字串型別資料

/**
 * 操作String型別資料
*/
@Test
public void testString(){
    //存值
    redisTemplate.opsForValue().set("city123","beijing");

    //取值
    String value = https://www.cnblogs.com/wren/p/(String) redisTemplate.opsForValue().get("city123");
    System.out.println(value);

    //存值,同時設定過期時間
    redisTemplate.opsForValue().set("key1","value1",10l, TimeUnit.SECONDS);

    //存值,如果存在則不執行任何操作
    Boolean aBoolean = redisTemplate.opsForValue().setIfAbsent("city1234", "nanjing");
    System.out.println(aBoolean);
}

操作哈希型別資料

/**
 * 操作Hash型別資料
*/
@Test
public void testHash(){
    HashOperations hashOperations = redisTemplate.opsForHash();

    //存值
    hashOperations.put("002","name","xiaoming");
    hashOperations.put("002","age","20");
    hashOperations.put("002","address","bj");

    //取值
    String age = (String) hashOperations.get("002", "age");
    System.out.println(age);

    //獲得hash結構中的所有欄位
    Set keys = hashOperations.keys("002");
    for (Object key : keys) {
        System.out.println(key);
    }

    //獲得hash結構中的所有值
    List values = hashOperations.values("002");
    for (Object value : values) {
        System.out.println(value);
    }
}

操作串列型別資料

/**
 * 操作List型別的資料
*/
@Test
public void testList(){
    ListOperations listOperations = redisTemplate.opsForList();

    //存值
    listOperations.leftPush("mylist","a");
    listOperations.leftPushAll("mylist","b","c","d");

    //取值
    List<String> mylist = listOperations.range("mylist", 0, -1);
    for (String value : mylist) {
        System.out.println(value);
    }

    //獲得串列長度 llen
    Long size = listOperations.size("mylist");
    int lSize = size.intValue();
    for (int i = 0; i < lSize; i++) {
        //出佇列
        String element = (String) listOperations.rightPop("mylist");
        System.out.println(element);
    }
}

操作集合型別資料

/**
 * 操作Set型別的資料
*/
@Test
public void testSet(){
    SetOperations setOperations = redisTemplate.opsForSet();

    //存值
    setOperations.add("myset","a","b","c","a");

    //取值
    Set<String> myset = setOperations.members("myset");
    for (String o : myset) {
        System.out.println(o);
    }

    //洗掉成員
    setOperations.remove("myset","a","b");

    //取值
    myset = setOperations.members("myset");
    for (String o : myset) {
        System.out.println(o);
    }

}

操作有序集合型別資料

/**
 * 操作ZSet型別的資料
*/
@Test
public void testZset(){
    ZSetOperations zSetOperations = redisTemplate.opsForZSet();

    //存值
    zSetOperations.add("myZset","a",10.0);
    zSetOperations.add("myZset","b",11.0);
    zSetOperations.add("myZset","c",12.0);
    zSetOperations.add("myZset","a",13.0);

    //取值
    Set<String> myZset = zSetOperations.range("myZset", 0, -1);
    for (String s : myZset) {
        System.out.println(s);
    }

    //修改分數
    zSetOperations.incrementScore("myZset","b",20.0);

    //取值
    myZset = zSetOperations.range("myZset", 0, -1);
    for (String s : myZset) {
        System.out.println(s);
    }

    //洗掉成員
    zSetOperations.remove("myZset","a","b");

    //取值
    myZset = zSetOperations.range("myZset", 0, -1);
    for (String s : myZset) {
        System.out.println(s);
    }
}

通用操作

/**
 * 通用操作,針對不同的資料型別都可以操作
*/
@Test
public void testCommon(){
    //獲取Redis中所有的key
    Set<String> keys = redisTemplate.keys("*");
    for (String key : keys) {
        System.out.println(key);
    }

    //判斷某個key是否存在
    Boolean uname = redisTemplate.hasKey("uname");
    System.out.println(uname);

    //洗掉指定key
    redisTemplate.delete("myZset");

    //獲取指定key對應的value的資料型別
    DataType dataType = redisTemplate.type("myset");
    System.out.println(dataType.name());

}

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/509652.html

標籤:其它

上一篇:MySQL安裝卸載、idea中Database的使用、常用的sql陳述句

下一篇:基于 Apache Hudi 極致查詢優化的探索實踐

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more