主頁 > 資料庫 > day02-Redis命令

day02-Redis命令

2023-04-17 08:33:05 資料庫

Redis命令

1.Redis資料結構介紹

Redis是一個key-value的資料庫,key一般是String型別,value的型別多種多樣,value常見的八種型別:

image-20230416153745533

Redis支持五種基本的資料型別:string(字串),hash(哈希),list(串列),set(集合)及zset(sorted set,有序集合),

  • 各個資料型別應用場景:
型別 簡介 特性 場景
String(字串) 二進制安全 可以包含任何資料,比如jpg圖片或者序列化的物件,一個鍵最大能存盤512M ---
Hash(字典) 鍵值對集合,即編程語言中的Map型別 適合存盤物件,并且可以像資料庫中update一個屬性一樣只修改某一項屬性值(Memcached中需要取出整個字串反序列化成物件修改完再序列化存回去) 存盤、讀取、修改用戶屬性
List(串列) 鏈表(雙向鏈表) 增刪快,提供了操作某一段元素的API 1,最新訊息排行等功能(比如朋友圈的時間線) 2,訊息佇列
Set(集合) 哈希表實作,元素不重復 1、添加、洗掉,查找的復雜度都是O(1) 2、為集合提供了求交集、并集、差集等操作 1、共同好友 2、利用唯一性,統計訪問網站的所有獨立ip 3、好友推薦時,根據tag求交集,大于某個閾值就可以推薦
Sorted Set(有序集合) 將Set中的元素增加一個權重引數score,元素按score有序排列 資料插入集合時,已經進行天然排序 1、排行榜 2、帶權重的訊息佇列

不同的資料型別的操作會對應不同的命令,Redis為了方便我們學習,將操作不同資料型別的命令做了不同分組分組,在官網可以查看,也可以通過命令列查看:

image-20230416160212084

2.Redis通用命令

通用指令是部分資料型別都可以使用的指令,常見的可以通過官方檔案選擇Generic分組查看:

image-20230416160417545

或者使用命令列查看:help @generic

127.0.0.1:6379> help @generic

  DEL key [key ...]
  summary: Delete a key
  since: 1.0.0

  DUMP key
  summary: Return a serialized version of the value stored at the specified key.
  since: 2.6.0

  EXISTS key [key ...]
  summary: Determine if a key exists
  since: 1.0.0
  
  ....

這里介紹一些常見的通用命令:

  • keys 在本庫中,查看符合輸入模板的所有key的值:(不建議在生產環境上使用)

    #命令解釋
    127.0.0.1:6379> help keys #通過help [command] 可以查看一個命令的具體用法
    
      KEYS pattern
      summary: Find all keys matching the given pattern
      since: 1.0.0
      group: generic
      
    #例子 
    127.0.0.1:6379> keys *
    1) "marry"
    2) "jack"
    127.0.0.1:6379> keys j*
    1) "jack"
    
  • del 洗掉一個或者多個key

    #命令解釋
    127.0.0.1:6379> help del
    
      DEL key [key ...]
      summary: Delete a key
      since: 1.0.0
      group: generic
      
    #例子
    127.0.0.1:6379> keys *
    1) "foo"
    2) "marry"
    3) "jack"
    4) "tom"
    127.0.0.1:6379> del tom marry #一次可以洗掉多個key,回傳的值是洗掉key的數量
    (integer) 2
    127.0.0.1:6379> keys *
    1) "foo"
    2) "jack"
    
  • exists 判斷一個或多個key是否存在

    #命令解釋
    127.0.0.1:6379> help exists
    
      EXISTS key [key ...]
      summary: Determine if a key exists
      since: 1.0.0
      group: generic
    
    #例子
    127.0.0.1:6379> exists jack  foo  tom mary #回傳值是查詢的key存在的個數
    (integer) 2
    
  • expire 給一個key設定有效期,到期時該key自動洗掉

    #命令解釋
    127.0.0.1:6379> help expire
    
      EXPIRE key seconds
      summary: Set a key's time to live in seconds
      since: 1.0.0
      group: generic
    
    #例子
    127.0.0.1:6379> expire k1 5 #設定k1的過期時間為5秒
    (integer) 1
    127.0.0.1:6379> get k1 #5秒后查看,發現已經給被洗掉了
    (nil)
    
  • ttl 查看一個key的剩余有效期

    #命令解釋
    127.0.0.1:6379> help ttl
    
      TTL key
      summary: Get the time to live for a key
      since: 1.0.0
      group: generic
    
    #例子
    127.0.0.1:6379> ttl foo 
    (integer) -1 				#-1 代表該key為永久有效
    127.0.0.1:6379> expire foo 5
    (integer) 1
    127.0.0.1:6379> ttl foo
    (integer) 2					#其他數字代表該key剩余時間(秒)
    127.0.0.1:6379> ttl foo
    (integer) -2				#-2 代表該key已經過期
    

3.String型別

string 是 redis 最基本的型別,你可以理解成與 Memcached 一模一樣的型別,一個 key 對應一個 value,string 型別是二進制安全的,意思是 redis 的 string 可以包含任何資料,比如jpg圖片或者序列化的物件,string 型別是 Redis 最基本的資料型別,string 型別的值最大能存盤 512MB,

根據字串的格式不同,又可以分為3類:

  • String:普通字串

  • int:整數型別,可以做自增、自減操作

  • float:浮點型別,可以做自增、自減操作

不管是哪種格式,底層都是位元組陣列形式存盤,只不過是編碼形式不同

  • String型別常見命令
    • set 添加或者修改已經存在的一個String型別的鍵值對
    • get 根據key獲取String型別的value
    • mset 批量添加多個String型別的鍵值對
    • mget 根據多個key獲取多個String型別的value
    • incr 讓一個整型的value自增1
    • incrby 讓一個整型的value自增并指定步長,例如 incrby num 2 #讓key為num對應的value自增2
    • incrbyfloat 讓一個浮點型別的數字自增并指定步長
    • setnx 添加一個String型別的鍵值對,前提是這個key不存在,否則不執行
    • setex 添加一個String型別的鍵值對,并且指定有效期

3.1key的層級格式

Redis沒有類似MySQL的Table的概念,我們該如何區分不同型別的key呢?例如,需要存盤用戶、商品資訊到redis,有一個用戶id為1,有一個商品的id也恰好是1,

Redis的key允許有多個單詞形成層級結構,多個單詞之間用:隔開,例如:專案名:業務名:型別:id,由此我們可以根據層級關系來解決上面的問題:

user相關的key:專案名:user:1

product相關的key:專案名:product:1

如果value是一個Java物件,例如一個User物件,則可以將物件序列化為JSON字串后存盤,例如:

127.0.0.1:6379> set olien:user:1 '{"id":1, "name":"Jack", "age": 21}'
OK
127.0.0.1:6379> set olien:user:2 '{"id":2, "name":"Rose", "age": 18}'
OK
127.0.0.1:6379> set olien:product:1 '{"id":1, "name":"小米11", "price": 4999}'
OK
127.0.0.1:6379> set olien:product:2 '{"id":2, "name":"榮耀6", "price": 2999}'
OK
127.0.0.1:6379> keys olien*
1) "olien:product:1"
2) "olien:product:2"
3) "olien:user:1"
4) "olien:user:2"
127.0.0.1:6379>

我們在可視化軟體查看,可以看到使用冒號隔開時,資料自然形成了不同的層級結構,這就可以避免id相同時的沖突,實作分層存盤,

image-20230416173926193

4.Hash型別

Hash 型別,也叫散列,其 value 是一個無需字典,類似 Java 中的 hashmap 結構,

Redis hash 是一個鍵值(key=>value)對集合,Redis hash 是一個 string 型別的 field 和 value 的映射表,hash 特別適合用于存盤物件,每個 hash 可以存盤 2^32 -1 鍵值對(40多億),

String結構是將物件序列化為json字串后存盤,但當需要修改物件的某個欄位時很不方便:

image-20230416174559647

而Hash結構可以將物件中的每個欄位獨立存盤,可以針對單個欄位做CRUD操作:

image-20230416174524081
  • Hash常見的命令

    這里的哈希表指的是一個hash型別(key-value[field-value])

    • HSET key field value[field2 value2...] 將哈希表 key 中的欄位 field 的值設為 value

      127.0.0.1:6379> HSET lucy id 2 age 10
      (integer) 2
      
    • HGET key field 獲取存盤在哈希表中指定欄位的值

    • HDEL key field [field2...] 洗掉一個或者多個哈希表key的欄位

      127.0.0.1:6379> HDEL lucy addr age
      (integer) 2
      
    • HMSET key field1 [field2...] 同時將多個field-value(域-值)對設定到哈希表key中

      127.0.0.1:6379> hmset lucy name lucy id 5 age 18
      OK
      
    • HMGET key field1 [field2...] 獲哈希表中給定欄位的值

      127.0.0.1:6379> HMGET lucy id age name
      1) "5"
      2) "18"
      3) "lucy"
      
    • HGETALL key 獲取一個hash型別的key中的所有field和所有value

      127.0.0.1:6379> HGETALL lucy
      1) "name"
      2) "lucy"
      3) "id"
      4) "5"
      5) "age"
      6) "18"
      
    • HKEYS key 獲取哈希表key中的所有field

      127.0.0.1:6379> hkeys lucy
      1) "name"
      2) "id"
      3) "age"
      
    • HLEN key 獲取哈希表key中所有欄位的數量

      127.0.0.1:6379> HLEN lucy
      (integer) 4
      
    • HVALS key 獲取哈希表key中的所有value

      127.0.0.1:6379> hvals lucy
      1) "lucy"
      2) "5"
      3) "18"
      
    • HINCRBY key field increment 為哈希表key中的指定欄位的整數值加上增量increment

      127.0.0.1:6379> HINCRBY lucy age 100
      (integer) 118
      
    • HINCRBYFLOAT key field increment 為哈希表key中的指定欄位的浮點數值加上增量increment

      127.0.0.1:6379> HINCRBYFLOAT lucy score 30
      "90"
      
    • HSETNX key field value 只有在欄位不存在時,設定哈希表key中欄位的值

      127.0.0.1:6379> HSETNX lucy age 10086
      (integer) 0
      127.0.0.1:6379> HSETNX lucy addr beijing
      (integer) 1
      
    • HEXISTS key field 查看哈希表key中,指定的欄位是否存在

      127.0.0.1:6379> HEXISTS lucy age #回傳值1表示存在,0表示不存在
      (integer) 1
      127.0.0.1:6379> HEXISTS lucy foo
      (integer) 0
      
    • HSCAN key cursor [MATCH pattern] [COUNT count] 迭代哈希表中的鍵值對

5.List型別

List 是簡單的字串串列,按照插入順序排序,你可以添加一個元素到串列的頭部(左邊)或者尾部(右邊),一個串列最多可以包含 2^32 - 1 個元素 (4294967295, 每個串列超過40億個元素),

Redis 的 List型別與 Java 的LinkedList 類似,可以看做是一個雙向鏈表結構,可以同時支持正向檢索和反向檢索,

特征也和 LinkedList 類似:

  • 有序
  • 元素可以重復
  • 插入和洗掉速度快
  • 查詢速度一般

常用來存盤一個有序資料,例如朋友圈點贊串列,評論串列等,

下表列出了串列相關的基本命令:

命令首字符:R代表串列右側(Right),L代表串列左側(Left)

image-20230416184653538
命令及描述
BLPOP key1 [key2 ] timeout 移出并獲取串列的第一個元素, 如果串列沒有元素會阻塞串列直到等待超時或發現可彈出元素為止,
BRPOP key1 [key2] timeout 移出并獲取串列的最后一個元素, 如果串列沒有元素會阻塞串列直到等待超時或發現可彈出元素為止,
BRPOPLPUSH source destination timeout 從串列中彈出一個值,將彈出的元素插入到另外一個串列中并回傳它; 如果串列沒有元素會阻塞串列直到等待超時或發現可彈出元素為止,
LINDEX key index 通過索引獲取串列中的元素
LINSERT key BEFORE|AFTER pivot value 在串列的元素前或者后插入元素
LLEN key 獲取串列長度
LPOP key 移出并獲取串列的第一個元素
LPUSH key value1 [value2] 將一個或多個值插入到串列頭部
LPUSHX key value 將一個值插入到已存在的串列頭部
LRANGE key start stop 獲取串列指定范圍內的元素
LREM key count value 移除串列元素
LSET key index value 通過索引設定串列元素的值
LTRIM key start stop 對一個串列進行修剪(trim),就是說,讓串列只保留指定區間內的元素,不在指定區間之內的元素都將被洗掉,
RPOP key 移除串列的最后一個元素,回傳值為移除的元素,
RPOPLPUSH source destination 移除串列的最后一個元素,并將該元素添加到另一個串列并回傳
RPUSH key value1 [value2] 在串列中添加一個或多個值到串列尾部
RPUSHX key value 為已存在的串列添加值
  • 思考:使用List型別模擬 堆疊 / 佇列 / 阻塞佇列

根據上面的命令,我們就可以使用List型別模擬堆疊、佇列、阻塞佇列:

  1. 模擬堆疊:只需要入口和出口在同一邊

  2. 模擬佇列:入口和出口在不同邊

  3. 模擬阻塞佇列:入口和出口在不同邊,出隊時采用 BLPOP 或 BRPOP

6.Set型別

Redis 的 Set 是 string 型別的無序集合,集合是通過哈希表實作的,所以添加,洗掉,查找的復雜度都是 O(1)

注意:如果在無序集合中的同一個元素被添加了兩次,根據集合內元素的唯一性,第二次插入的元素將被忽略,集合中最大的成員數為 2^32 - 1(4294967295, 每個集合可存盤40多億個成員),

Redis 的 Set 結構與 Java 中的 HashSet 類似,可以看做是一個 value為 null 的 HashMap,因為也是一個哈希表,因此具備與 HashSet 類似的特征:

  • 無序
  • 元素不可重復
  • 查找快
  • 支持交集、并集、差集等功能

下表列出了 Redis 集合基本命令:

序號 命令及描述
1 SADD key member1 [member2] 向集合添加一個或多個成員
2 SCARD key 獲取集合的成員數
3 SDIFF key1 [key2] 回傳第一個集合與其他集合之間的差異,
4 SDIFFSTORE destination key1 [key2] 回傳給定所有集合的差集并存盤在 destination 中
5 SINTER key1 [key2] 回傳給定所有集合的交集
6 SINTERSTORE destination key1 [key2] 回傳給定所有集合的交集并存盤在 destination 中
7 SISMEMBER key member 判斷 member 元素是否是集合 key 的成員
8 SMEMBERS key 回傳集合中的所有成員
9 SMOVE source destination member 將 member 元素從 source 集合移動到 destination 集合
10 SPOP key 移除并回傳集合中的一個隨機元素
11 SRANDMEMBER key [count] 回傳集合中一個或多個亂數
12 SREM key member1 [member2] 移除集合中一個或多個成員
13 SUNION key1 [key2] 回傳所有給定集合的并集
14 SUNIONSTORE destination key1 [key2] 所有給定集合的并集存盤在 destination 集合中
15 SSCAN key cursor [MATCH pattern] [COUNT count] 迭代集合中的元素

Set命令練習:

  1. 將下列資料用redis的set集合來存盤:

    • 張三的好友有:李四,王五,趙六
    • 李四的好友有:王五,麻子,二狗
    127.0.0.1:6379> sadd zs ls wu zl
    (integer) 3
    127.0.0.1:6379> sadd ls wu mz eg
    (integer) 3
    
  2. 利用Set命令來實作下列功能:

    • 計算張三的好友有多少人

      127.0.0.1:6379> SCARD zs
      (integer) 3
      
    • 計算張三和李四有哪些共同好友

      127.0.0.1:6379> SINTER zs ls #交集
      1) "wu"
      
    • 查詢哪些人是張三的好友卻不是李四的好友

      127.0.0.1:6379> SDIFF zs ls #差集
      1) "zl"
      2) "ls"
      
    • 查詢張三和李四的好友總共有哪些人

      127.0.0.1:6379> SUNION zs ls #并集
      1) "wu"
      2) "zl"
      3) "eg"
      4) "ls"
      5) "mz"
      
    • 判斷李四是否是張三的好友

      127.0.0.1:6379> SISMEMBER zs ls
      (integer) 1
      
    • 判斷張三是否是李四的好友

      127.0.0.1:6379> SISMEMBER ls zs
      (integer) 0
      
    • 將李四從張三的好友串列中洗掉

      127.0.0.1:6379> SREM zs ls
      (integer) 1
      

7.zset(SortedSet)型別

Redis 的 Sorted Set 是一個可排序的 Set集合,與 Java 中的 TreeSet 有些類似,但底層資料結構卻差別很大,SortedSet 中的每一個元素都帶有一個 score 屬性(double型別),redis正是通過score來為集合中的成員進行從小到大的排序,底層的實作是一個跳表(SkipList)加哈希表,zset的成員是唯一的,但分數(score)卻可以重復,

集合是通過哈希表實作的,所以添加,洗掉,查找的復雜度都是 O(1),

SortedSet具備下列特性:

  • 可排序
  • 元素不重復
  • 查詢速度快

SortedSet常用于實作排行榜或者帶權重的訊息佇列這樣的功能,

下表列出了 redis 有序集合的基本命令:

注意:所有排名默認是升序,如果要降序則在命令的Z后面添加REV即可

序號 命令及描述
1 ZADD key score1 member1 [score2 member2] 向有序集合添加一個或多個成員,或者更新已存在成員的分數
2 ZCARD key 獲取有序集合的成員數
3 ZCOUNT key min max 計算在有序集合中指定區間分數的成員數
4 ZINCRBY key increment member 有序集合中對指定成員的分數加上增量 increment
5 ZINTERSTORE destination numkeys key [key ...] 計算給定的一個或多個有序集的交集并將結果集存盤在新的有序集合 destination 中
6 ZLEXCOUNT key min max 在有序集合中計算指定字典區間內成員數量
7 ZRANGE key start stop [WITHSCORES] 通過索引區間回傳有序集合指定區間內的成員
8 ZRANGEBYLEX key min max [LIMIT offset count] 通過字典區間回傳有序集合的成員
9 ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] 通過分數回傳有序集合指定區間內的成員
10 ZRANK key member 回傳有序集合中指定成員的索引
11 ZREM key member [member ...] 移除有序集合中的一個或多個成員
12 ZREMRANGEBYLEX key min max 移除有序集合中給定的字典區間的所有成員
13 ZREMRANGEBYRANK key start stop 移除有序集合中給定的排名區間的所有成員
14 ZREMRANGEBYSCORE key min max 移除有序集合中給定的分數區間的所有成員
15 ZREVRANGE key start stop [WITHSCORES] 回傳有序集中指定區間內的成員,通過索引,分數從高到低
16 ZREVRANGEBYSCORE key max min [WITHSCORES] 回傳有序集中指定分數區間內的成員,分數從高到低排序
17 ZREVRANK key member 回傳有序集合中指定成員的排名,有序集成員按分數值遞減(從大到小)排序
18 ZSCORE key member 回傳有序集中,成員的分數值
19 ZUNIONSTORE destination numkeys key [key ...] 計算給定的一個或多個有序集的并集,并存盤在新的 key 中
20 ZSCAN key cursor [MATCH pattern] [COUNT count] 迭代有序集合中的元素(包括元素成員和元素分值)

SortedSet命令練習:

將班級的下列學生得分存入Redis的SortedSet中:

Jack 85,Lucy 89,Rose 82,Tom 95,Jerry 78,Amy 92,Miles 76

127.0.0.1:6379> ZADD student 85 jack 89 lucy 82 rose 95 tom 78 jerry 92 amy 76 miles
(integer) 7

并實作如下功能:

  1. 洗掉Tom

    127.0.0.1:6379> ZREM student tom
    (integer) 1
    
  2. 獲取Amy的分數

    127.0.0.1:6379> ZSCORE student amy
    "92"
    
  3. 獲取Rose的排名

    127.0.0.1:6379> ZREVRANK student rose
    (integer) 3 #降序,從0開始,實際排名為4
    
  4. 查詢80分以下有幾個學生

    127.0.0.1:6379> ZCOUNT student 0 80
    (integer) 2
    
  5. 給Amy加2分

    127.0.0.1:6379> ZINCRBY student 2 amy
    "94"
    
  6. 查詢成績前3名的同學

    127.0.0.1:6379> ZREVRANGE student 0 2
    1) "amy"
    2) "lucy"
    3) "jack"
    
  7. 查出80分以下的所有學生

    127.0.0.1:6379> ZREVRANGEBYSCORE student 80 0
    1) "jerry"
    2) "miles"
    

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

標籤:NoSQL

上一篇:特性介紹 | MySQL 測驗框架 MTR 系列教程(一):入門篇

下一篇:MySQL表設計與優化

標籤雲
其他(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